现在的位置: 首页 > 综合 > 正文

ADO.NET常用对象详解之:DataReader对象

2012年08月02日 ⁄ 综合 ⁄ 共 1566字 ⁄ 字号 评论关闭

1.DataReader对象概述
  DataReader对象只能对查询获得的数据集进行自上而下的访问,但效率很高。如果仅仅是访问数据的话,可以使用DataReader。但DataReader要求一直连接,所以将结果的一小部分先放在内存中,读完后再从数据库中读取一部分,相当于一个缓存机制。这对于查询结果百万级的情况来说,带来的好处是显而易见的。
  DataReader对象有如下几个特点:
  1.快速访问数据。由于DataReader对象是只进和只读的,所以开销相对较小,速度比DataSet快。
  2.只进和只读。不能处理数据,只能显示数据。
  3.自己管理连接。DataAdapter对象可以自动地打开和关闭连接,DataReader对象必须显式地打开和关闭连接。
  4.使用较少地服务器资源。

  2.创建DataReader对象
  具体步骤:
  (1)创建和打开数据库连接。
  (2)创建一个Command对象。
  (3)从Command对象中创建DataReader。
  (4)执行ExecuteReader对象。
  (5)使用DataReader对象。
  (6)关闭DataReader对象。
  (7)关闭Connection对象。


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();
}

  3.从DataReader读取数据
  为每个记录调用Read方法:可以调用Read方法来访问DataRead对象中的一个记录,因为DataReader对象中的默认位置是在第一个记录的前面,所以必须在访问任何数据之前调用Read方法。当不再有可用记录时,Read方法就返回一个空值。


while (dr.Read())
{
    lbName.Text 
+= dr["au_name"];
}

  访问字段:可以通过顺序位置,名字或者调用适当的Get方法来访问一个字段,Get方法包括GetDateTime,GetDouble,GetInt32或GetString等。


dr.Read();
lbName.Text 
=dr.GetString(1+ "," +dr.GetString(2);


dr["au_fname"];

抱歉!评论已关闭.