检测IDataReader是否为空的最佳方法是什么?

JC *_*bbs 9 c# ado.net

似乎IDataReader.Read()总是至少有一次真实(如果我错了,请告诉我.)那么如果不将它包装在try/catch中,你如何判断它是否没有记录?

Ben*_*man 20

if(dr.Read())
{
   //do stuff
}
else
{
 //it's empty
}
Run Code Online (Sandbox Code Playgroud)

通常你会这样做:

while(dr.Read())
{
}
Run Code Online (Sandbox Code Playgroud)

  • 小心这一点,`Read()`[让读者进入下一行](https://msdn.microsoft.com/en-us/library/system.data.idatareader.read(v = vs.110)的.aspx).所以它不仅仅**检查datareader是否包含数据 (3认同)

Jam*_*rue 6

是的,如果您要使用该接口,则“直到错误读取”是测试的唯一方法。如果您正在寻找通用的IDataReader实现,则可以尝试DbDataReader使用该HasRows属性。

  • DbDataReader是一个抽象类 (2认同)