ADO.NET 常用对象

ADO.NET提供了一些常用对象来方便开发人员进行数据库的操作,这些常用的对象通常会使用在应用程序开发中,对于中级的开发人员而言,熟练的掌握这些常用的ADO.NET对象,能够自行封装数据库操作类,来简化开发。ADO.NET的常用对象包括:

Connection对象。

DataAdapter对象。

Command对象。

DataSet对象。

DataReader对象。

上面的对象在.NET应用程序操作数据中是非常重要的,它们不仅提供了数据操作的便利,同时,还提供了高级的功能给开发人员。为开发人员解决特定的需求。

Connection连接对象

根据所用的.NET数据库程序的不同,command对象也分成四种,分别是sqlcommand、OleDbCcommand、OdbCcommand和Oraclecommand,SQL数据程序对应的是sqlcommand对象,command对象的主要属性和方法如下表;

类别

名称

说明

属性

CommandText

获取或设置对数据库执行的SQL语句

Connection

获取或设置此command对象使用的Connection对象的名称

方法

ExecuteNonQuery

执行SQL语句并返回收影响的行数

ExecuteReader

执行查询语句,返回DataReader对象

ExecuteScalar

执行查询,返回结果集中第一行的第一列

通常情况下,Command对象用于数据的操作,例如执行数据的插入和删除,也可以执行数据库结构的更改,包括表和数据库。示例代码如下所示。

string str = "server='(local)';database='mytable';uid='sa';pwd='sa'"; //创建数据库连接字串

SqlConnection con = new SqlConnection(str);

con.Open(); //打开数据库连接

SqlCommand cmd = new SqlCommand("insert into news values ('title')",con);//建立Command对象

上述代码使用了可用的构造函数并指定了查询字符串和Connection对象来初始化Command对象cmd。通过指定Command对象的方法可以对数据执行具体的操作。

DataReader数据访问对象

当使用DataReader对象时,不会像DataSet那样提供无连接的数据库副本。DataReader类被设计为产生只读,只进的数据流。这些数据流都是从数据库返回的。所以,每次的访问或操作只有一个记录保存在服务器的内存中。相比与DataSet而言,DataReader具有较快的访问能力,并且能够使用较少的服务器资源,DataReader具有以下快速的数据库访问、只进和只读、减少服务器资源等特色。

1.快速的数据库访问

DataReader类是轻量级的,相比之下DataReader对象的速度要比DataSet要快。因为DataSet在创建和初始化时,可能是一个或多个表的集合,并且DataSet具有向前,向后读写和浏览的能力,所以当创建一个DataSet对象时,会造成额外的开销。

2.只进和只读

当对数据库的操作没有太大的要求时,可以使用DataReader显示数据。这些数据可以与单个list-bound控件绑定,也可以填充List接口。当不需要复杂的数据库处理时,DataReader能够较快的完成数据显示。

3.减少服务器资源

因为DataReader并不是数据的内存的表示形式,所以使用DataReader对服务器占用的资源很少。

4.自定义数据库管理

DataReader对象可以使用Read方法来进行数据库遍历,当使用Read方法时,可以以编程的方式自定义数据库中数据的显示方式,当开发自定义控件时,可以将这些数据整合到HTML中,并显示数据。

5.手动连接管理

DataAdapter对象能够自动的打开和关闭连接,而DataReader对象需要用户手动的管理连接。DataReader对象和DataAdapter对象很相似,都可以从SQL语句和一个连接中初始化。

DataReader读取数据库

创建DataReader对象,需要创建一个SqlCommand对象来代替SqlDataAdapter对象。与SqlDataAdapter对象类似的是,DataReader可以从SQL语句和连接中创建Command对象。创建对象后,必须显式的打开Connection对象。示例代码如下所示。

string str = "server='(local)';database='mytable';uid='sa';pwd='sa'";

SqlConnection con = new SqlConnection(str);

con.Open(); //打开连接

SqlCommand cmd = new SqlCommand("select * from mynews", con); //创建Command对象

SqlDataReader dr = cmd.ExecuteReader(); //创建DataReader对象

con.Close();

上述代码创建了一个DataReader对象,从上述代码中可以看出,创建DataReader对象必须经过如下几个步骤:

创建和打开数据库连接。

创建一个Command对象。

从Command对象中创建DataReader对象。

调用ExecuteReader对象。

DataReader对象的Read方法可以判断DataReader对象中的数据是否还有下一行,并将游标下移到下一行。通过Read方法可以判断DataReader对象中的数据是否读完。示例代码如下所示。

while (dr.Read())

通过Read方法可以遍历读取数据库中行的信息,当读取到一行时,需要获取某列的值只需要使用“[”和“]”运算符来确定某一列的值即可,示例代码如下所示。

while (dr.Read())

{

Response.Write(dr["title"].ToString()+"<hr/>");

}

上述代码通过dr[“title”]来获取数据库中title这一列的值,同样也可以通过索引来获取某一列的值,示例代码如下所示。

while (dr.Read())

{

Response.Write(dr[1].ToString()+"<hr/>");

}