检查数据读取器是否 Asp.net 行

本文关键字:Asp net 是否 数据 读取 检查 | 更新日期: 2023-09-27 18:36:08

我的代码:

string sqlQuery1 = "select * from employees where depid=6";
SqlDataReader Dr1 = dbconn.RunQueryReturnDataReader(sqlQuery1);
if(Dr1.read()) {    //or if (Dr1["empname"] != DBNull.Value)
            while (Dr1.Read())
            {        
                Label1.Text = Dr1["empname"].ToString();  
                Label2.Text = Dr1["empdes"].ToString(); 
                ...
            }
            Dr1.Close();
 }
 else {
            Label1.text = "defaultValue";
            Label2.text = "defaultValue";
            ...
 }

我只想检查SqlDataReader没有要显示的记录。如果没有记录,标签应显示我预先分配的默认值,或者如果标签上有记录显示数据读取器值。(假设 SqlDataReader 有 1 次重新编码或只有 norecord)

如何检查第一个数据读取器是否有行?

我已经尝试了两种方法,如上面的代码。

  1. if(Dr1.read()) - 这种方式工作正常。但是在执行If语句后,它没有值显示在标签上,因为read()会增加指针。结果标签 1 ,标签 2..不显示任何内容。

  2. if (Dr1["empname"] != DBNull.Value)

    这样,当 Sqldatareader 有 norows 时,会生成异常。

error: System.InvalidOperationException: Invalid attempt to read when no data is present

请帮帮我。

检查数据读取器是否 Asp.net 行

试试...

if(Dr1.HasRows)
{
   //....
}
if (Dr1 == null || !Dr1.HasRows) {
    // Do something
}