ADO.NET --DataReader对象

在前面,我们知道了如何使用Command对象的ExecuteScalar()方法从数据库中检索单个值,那么,要想从数据库中读取多条记录的时候该怎么办呢?我们可以使用Command对象的ExecuteReader()方法,这个方法返回一个DataReader对象,通过这个DataReader对象,我们就可以从数据库读取数据了。

使用DataReader对象可以从数据库中检索到只读的数据,它每次从查询结果中读取一行数据到内存中,所以使用DataReader对数据操作非常快。DataReader属于.NET数据提供程序,所以每种.NET数据提供程序都有自己的DataReader类。在这篇文章中,我们还是在SQL SERVER 数据库的基础上,讨论DataReader类。

                                                         DataReader对象

属性

HasRows                               是否返回了结果,如果有查询结果返回True,否则返回False

FieldCount                              当前行中的列

方法

Read ()                                      前进到下一行记录,如果读到记录返回True,否则返回False

Close ()                                      关闭DataReader对象

                                              如何使用DataReader对象

创建DataReader对象,需要调用Command对象的ExecuteReader()方法,ExecuteReader()方法的返回值就是一个DataReader对象。

使用DataReader对象的步骤

(1)创建Connection对象

利用连接字符串创建Connection对象

(2)创建Command对象

利用SQL语句和Connection对象创建Command对象

(3)打开数据库,调用Command 对象的ExecuteReader()方法返回DataReader对象

切记,一定要先打开数据库,然后在返回DataReader对象。因为ExecuteReader()方法要求已经打开并且可用的数据库连接。

(4)使用DataReader对象的Read()方法进行逐行读取,该方法返回Boolean类型的值,若有数据可读,则返回True.否则为,False

dataReader.Read()

(5)读取当前行某列的值

我们可以像使用数组那样,用方括号读取某列的值,如(type)dataReader[0],方括号中可以像数组一样使用列的索引,从0开始,也

可以使用列名,因为取出的值是Object类型的,所以要进行类型转换。

(string)dataReader["studentName"];

(6)关闭DataReader对象

调用其Close()方法进行关闭。DataReader对象它是独占数据库连接的。所以,当我们需要利用Connection对象进行其他操作时,

必须调用DataReader对象的Close()方法关闭DataReader对象。

示例:

以下代码的目的是通过DataReader对象读取数据,向ComBox控件中添加数据。

Code:
  1. //当前窗体加载时间发生   
  2. public void TestFom_Load(object sender,EventArgs e)   
  3. {   
  4.            try  
  5.           {   
  6.                   string sql = "select * from Grade";   
  7.   
  8.                   string connString = "Data Source =.;Initial Catalog = MySchool;User ID = sa;Pwd = 123456";   
  9.   
  10.                   sqlConnection connection = new SqlConnection(connString);   
  11.   
  12.                   SqlCommd objCommand = new SqlCommand(sql,connection);   
  13.   
  14.                   connection.Open();   
  15.   
  16.                   SqlDataReader objReader = objCommand.ExecuteReader();   
  17.   
  18.                   if(objReader.HasRows)   
  19.                  {   
  20.                       while(objReader.Read())   
  21.                       {   
  22.                                   this.cboItems.Items.Add(objReader[0].ToString());   
  23.                       }   
  24.                       objReader.Close();   
  25.                  }   
  26.           }   
  27.          catch(Exception ex)   
  28.          {   
  29.                       MessageBox.Show(ex.Message);   
  30.          }   
  31.          finally  
  32.          {   
  33.                       connection.Close();   
  34.          }   
  35. }  

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值