DataReader允许向前或者只读的访问数据记录,许多时候我们需要返回一个select查询的纪录数目。而DataReader本身却没有提供这个功能,我们能够运用一些技巧来迅速而又高效的得到数据,同时也能够得到所影响的记录数目。下面就是我们怎样来实现这个目 的:


我们用Command对象来绑定多个查询语句,然后我们通过ExecuteReader()来执行它。它将返回多个查询记录集,我们可以通过DataReader的NextResult()方法来遍历所有的记录集,然后把结果绑定到DataGrid

Dim cnn As New SqlConnection(Global.GetConnectionString)
Dim cmd As New SqlCommand()
Dim dr As SqlDataReader
cnn.Open()
cmd.CommandText = "select count(*) from employees;
select * from employees"
cmd.Connection = cnn

dr = cmd.ExecuteReader

dr.Read()
Label1.Text = dr.GetValue(0)
dr.NextResult()
DataGrid1.DataSource = dr
DataGrid1.DataBind()


当然了上面的这种方法还是有欠缺的,我们总不能为了取得一个记录集的数量而多写一条相关的SQL吧,因此我们可以通过变量来进行记录,这个变量可以在遍历每个结果集的时候通过循环来递增。当然你也可以得到多个结果集的每个结果集的记录数目。

int CountResult = 0;




  while (myReader.Read()){

     //write your sentece

     CountResult = CountResult + 1;

}

int CountResult = 0;

myReader.NextResult();

 RecordCount = 0;

while (myReader.Read())
{
    //Write logic to process data for the second result.
    RecordCount = RecordCount + 1;
}
MessageBox.Show("Authors from California:" + RecordCount.ToString());

}

这样我们就可以得到多个查询的相关记录数了,应当说还是相当有用的。用惯了ADO的朋友们,是否是可以一试了!



posted on 2005-05-15 14:31  冷菜  阅读(1656)  评论(4编辑  收藏  举报