A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 袁雅墨 中级黑马   /  2012-9-5 00:50  /  3066 人查看  /  18 人回复  /   2 人收藏 转载请遵从CC协议 禁止商业使用本文

ado.net组件中有哪些常用的对象?
Connection对象:与数据源建立连接,连接sql server7.0 或更新版本数据库用SqlConnection,连接OLEDB数据源使用OledbConnection.
Command 对象:对数据源执行SQL命令并返回结果,SQL Server7.0或更新版本用SqlCommand,OLE DB数据源使用OledbCommand.
DataReader对象: 读取数据源的数据,只能将数据源的数据从头到尾依次读出,Sql server7.0或以上版本使用SqlDataReader,Oledb数据源使用OledbReader
DataAdapter对象:对数据源执行操作并返回结果,在DataSet与数据源之间建立通信,将数据源中的数据写入DataSet ,或根据DataSet中的数据必定数据源。Sql server7.0或以上版本使用SqlDataAdapter,Oledb 数据源使用OledbAdpater.
DataSet对象:     服务器内存中的数据库
DataView对象:       用于显示DataSet中的数据

ADO.net中常用的对象有哪些?分别描述一下.
Command对象
1.Command对象概述
  Command对象可以使用数据库命令直接与数据源进行通信。它的属性如下:
  Name:Command对象的程序化名称。在代码中使用此名称来引用Command对象。
  Connection:对Connection对象的引用,Command对象将使用该对象与数据库通信。
  CommandType:Text | StoreProduce | TableDirect。
  CommandText:SQL语句 | StoreProduce
  Parameters:命令对象包含的参数。  
  可以通过一下三种方式来创建Command对象:
方式一
string strConn, strSQL;
strConn = "Provider=SQLOLEDB;Data Source=(local)\\NetSDK;Initial Catalog=Northwind;Trusted_Connection=Yes;";
strSQL = "SELECT CustomerID,CompanyName FROM Customers";
OleDbConnection cn = new OleDbConnection(strConn);
cn.Open();
OleDbCommand cmd;
cmd = cn.CreateCommand();
cmd.CommandText = strSQL;
方式二
string strConn, strSQL;
strConn = "Provider=SQLOLEDB;Data Source=(local)\\NetSDK;Initial Catalog=Northwind;Trusted_Connection=Yes;";
strSQL = "SELECT CustomerID,CompanyName FROM Customers";
OleDbConnection cn = new OleDbConnection(strConn);
cn.Open();
OleDbCommand cmd;
cmd = new OleDbCommand();
cmd.CommandText = strSQl;
cmd.Connection = cn;方式三
string strConn, strSQL;
strConn = "Provider=SQLOLEDB;Data Source=(local)\\NetSDK;Initial Catalog=Northwind;Trusted_Connection=Yes;";
strSQL = "SELECT CustomerID,CompanyName FROM Customers";
OleDbConnection cn = new OleDbConnection(strConn);
cn.Open();
OleDbCommand cmd;
cmd = new OleDbCommand(strSQL, cn);
  2.Command对象参数
  常用属性如下:
  ParameterName:参数名称,如"@CatID"。
  DbType,SqlType,OleDbType:参数的数据类型。
  Direction:ParameterDirection枚举值。
                   ParameterDirection.Input(默认值)| ParameterDirection.InputOutput |
                   ParameterDirection.Output | ParameterDirection.ReturnValue
  3.执行
  四种执行方式:
ExecuteNonQuery() 返回受命令影响的行数。
ExecuteScalar()   返回第一行第一列(使用与集函数)。如Count(*),Sum,Avg等聚合函数。      
ExecuteReader() 返回一个DataReader对象。如果SQL不是查询Select,则返回一个没有任何数据的System.Data.SqlClient.SqlDataReader类型的集合(EOF)。
ExecuteXmlReader()返回一个XmlReader对象。
  4.参数化查询

使用示例

string strConn, strSQL;
strConn = "Provider=SQLOLEDB;Data Source=(local)\\NetSDK;Initial Catalog=Northwind;Trusted_Connection=Yes;"
OleDbConnection cn = new OleDbConnection(strConn);
cn.Open();
strSQl = "SELECT OrderID,CustomerID,EmployeeID,OrderDate FROM Order WHERE CustomerID = ?";
OleDbCommand cmd = new OleDbCommand(strSQl,cn)
cmd.Parameters.Add("@CustomerID",OleDbType.Wchar,5);
cmd.Parameters[0].Value = "ALFKI";
OleDbDataReader rdr = cmd.ExecuteReader();

----------------------------------------------------------------------------------------------------------------------------

Connection对象可用于连接到数据库管理数据库的事务。

1.Connection对象的创建

      4种数据库连接方式:
    OLEDB:System.Data.Oledb.OledbConnection
    SQL:System.Data.SqlCilent.SqlConnection
    ODBC:System.Data.Odbc.OdbcConnection
Oracle:System.Data.OracleClient.OracleConnection
      我们来看一个OleDbConnection创建的实例,一共有2种方法。
第一种:创建一个没有初始化的OleDbConnection对象,然后用ConnectionString来初始化。
创建Connection对象
String strConn;
strConn = "Provider=SQLOLEDB;Data Source={local)\\NETSDK;Initial Catalog=Northwind;Trusted_Connection=Yes;";
OleDbConnection cn;
cn = new OleDbConnection();
cn.ConnectionString = strConn;
第二种:使用构造函数来初始化OleDbConnection对象。
创建Connection对象
String strConn;
strConn = "Provider=SQLOLEDB;Data Source={local)\\NETSDK;Initial Catalog=Northwind;Trusted_Connection=Yes;";

OleDbConnection cn;

cn = new OleDbConnection(strConn);

2.连接字符串
连接字符串的几个常用参数:
Provider:这个属性用于设置或返回连接提供程序的名称,仅用于OleDbConnection对象。
Connection Timeout或Connect Timeout:在中止尝试并产生异常前,等待连接到服务器的连接时间长度(以秒为单位)。默认是15秒。
Initail Catalog:数据库的名称
Data Source:连接打开时使用的SQL Server名称,或者是Microsoft Access数据库的文件名。
Password:SQL Server帐户的登录密码。
User ID:SQL Server登录帐户。
Integrated Security或Trusted Connection:此参数决定是否是安全连接。可能的值有True、False和SSPI(SSPI是True的同义词)。
Persist Security Info:当设置为False时,如果连接是打开的或曾经处于打开状态,那么安全敏感信息(如密码)不会作为连接的一部分返回。设置属性值为True可能有安全风险。False是默认值。
3.打开和关闭连接
Open 方法:打开连接   
Close 方法:关闭连接
注:如果使用了连接池,关闭连接对象不会真正地关闭对数据源地连接。
如果只用DataAdapter,就不必显式地打开和关闭连接。当调用这些对象的方法时(Fill方法、Update方法)会自动检查连接是否打开。
DataReader对象
1.DataReader对象概述
DataReader对象只能对查询获得的数据集进行自上而下的访问,但效率很高。如果仅仅是访问数据的话,可以使用DataReader。但DataReader要求一直连接,所以将结果的一小部分先放在内存中,读完后再从数据库中读取一部分,相当于一个缓存机制。这对于查询结果百万级的情况来说,带来的好处是显而易见的。
  DataReader对象有如下几个特点:
快速访问数据。由于DataReader对象是只进和只读的,所以开销相对较小,速度比DataSet快。
只进和只读。不能处理数据,只能显示数据。
自己管理连接。DataAdapter对象可以自动地打开和关闭连接,DataReader对象必须显式地打开和关闭连接。
使用较少地服务器资源。
  2.创建DataReader对象
  具体步骤
  (1)创建和打开数据库连接。
  (2)创建一个Command对象
  (3)从Command对象中创建DataReader。
  (4)执行ExecuteReader对象。
  (5)使用DataReader对象
  (6)关闭DataReader对象
  (7)关闭Connection对象。
DataReader对象创建示例

DataReader对象使用示例
//打开Connection并创建Command
SqlConnection conn = new SqlConnection("data source=localhost;integrated security=true;initial catalog=pubs;");
conn.Open();
SqlCommand cmdAuthors = new SqlCommand("select * from Authors", conn);

//创建DataReader对象并读取数据
SqlDataReader dr;
dr = cmdAuthors.ExecuteReader();
while(dr.Read())

{

  ListBox.Items.Add(dr["au_lname"]+","+dr["au_fname"]);

}
//关闭DataReader和Connection
dr.Close();
conn.Close();

  当使用DataReader对象进行连接时,需要使用Try...Catch...Finally语句,这样可以确保若在某方面失败,连接将会关闭。否则,连接会无限期保持打开状态。
捕捉错误

try

{

   conn.Open();

   dr = cmdAuthors.ExecuteReader();

   //使用DataReader中返回的数据

}

catch

{
    //错误处理
}
finally
{
    dr.Close();

    conn.Close();

}

评分

参与人数 1技术分 +2 收起 理由
郑文 + 2

查看全部评分

18 个回复

倒序浏览
值得收藏和学习ing!
回复 使用道具 举报
哟西 !   好东西   直接收藏
回复 使用道具 举报
太常用的知识点了。。。
回复 使用道具 举报
支持楼主
回复 使用道具 举报
楼主好细心哦,省得我们再整理啦~~~~~
回复 使用道具 举报
呵好东西 一起分享。实在是看到这ADO的时候感觉真有点难。所以看了这个之后觉得还有点头绪了
回复 使用道具 举报
资建文 发表于 2012-9-5 10:33
哟西 !   好东西   直接收藏

大家一起加油
回复 使用道具 举报
李后量 发表于 2012-9-5 15:36
楼主好细心哦,省得我们再整理啦~~~~~

呵… 我是自己有 这样的感受了你们一开始学这个的时候觉得难吗?
回复 使用道具 举报
卢京 发表于 2012-9-5 11:49
支持楼主

谢谢……呵
回复 使用道具 举报
太细心了,感谢{:soso_e113:}
回复 使用道具 举报
谢谢  郑文你给我评的技术分……我还不知道这样可以得到技术分了呵
回复 使用道具 举报
徐阳 发表于 2012-9-5 17:50
太细心了,感谢

呵大家互相帮助……
回复 使用道具 举报
确实很细心 啊   哈哈  得分那是必须的
回复 使用道具 举报
谢谢楼主分享 收藏了
回复 使用道具 举报
袁雅墨 发表于 2012-9-5 16:14
谢谢……呵

也不是难,就是得记忆,多看看就好了吧:P
回复 使用道具 举报
李后量 发表于 2012-9-7 19:27
也不是难,就是得记忆,多看看就好了吧

因为以前没接触过.所以觉得难.现在好多了.呵还得加油..
回复 使用道具 举报
很全面的,值得收藏,对学习ADO很有帮助
回复 使用道具 举报
学习一下,感谢分享!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马