属性HasRows是否可用于iDataReader?

时间:2019-01-03 21:30:54

标签: sqldatareader idatareader

我问上述问题是因为我在“快速监视”窗口中看到了属性HasRows。

我正在修改别人的代码,需要遵循已建立的模式。我必须查询SQL Server表以从配置表中检索行,并决定首先在测试控制台应用程序中对其进行编码。我还决定使用SQLClient类型,并利用属性HasRows:

....
using (SqlDataReader rdr = cmd.ExecuteReader())
{
    if (rdr.HasRows)
    {
      ....

当我将代码移到另一个项目时,我注意到使用了IDataReader,而Intellisense则说HasRows属性不可用,所以我使用了while循环,即使我只有一行返回:

....
using (IDataReader rdr = cmd.ExecuteReader())
{
   while (rdr.Read())
   {
      ....

但是,当我在IDataReader rdr上进行快速监视时,却看到了HasRows属性!

enter image description here

那么我可以轻松地获取IDataReader的HasRows属性吗?如果真的存在?

1 个答案:

答案 0 :(得分:0)

不,你不能。 HasRows DbDataReader 的抽象方法,而 IDataReader 没有。 即使 DbDataReader 实现了 IDataReader ,它也是在 DbDataReader 内部而不是在接口本身中实现的。

在代码而不是界面中使用 DbDataReader