ADO.NET常用对象详解之:DataReader对象
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对象。
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
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"];
以上内容引自:http://www.cnblogs.com/hide0511/archive/2006/09/04/494328.html