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/>");
}