c# - 在 Asp.net 中检查数据读取器是否有行

标签 c# asp.net sql sqldatareader

我的代码:

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)

如何检查第一个 datareader 是否有 hasRow?

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

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

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

    这种方式在Sqldatareader没有数据时会产生异常。

错误:System.InvalidOperationException:不存在数据时尝试读取无效

请帮帮我。发送

最佳答案

尝试...

if(Dr1.HasRows)
{
   //....
}

关于c# - 在 Asp.net 中检查数据读取器是否有行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10859919/

相关文章:

c# - 警告 CS1570 : XML comment on 'myclass' has badly formed XML -- 'A name was started with an invalid character.'

asp.net - 在 Web 项目中包含 PCL 时出现错误 "Could not load file or assembly ' sqlite 3' or one of its dependencies"

c# - 带有浏览器界面的长进程

c# - Thread.Sleep的线程安全替代方案,允许C#中的浏览器事件

c# - 是否可以检查谁连接到您的无线网络?

Azure 的 ASP.NET 5 SecretManager 生产值(value)

php - SQL/PHP - 将 2 个表与其他表中的数据连接起来

mysql - 如何在 MySQL 中选择同一组随机行?

java - Hibernate 中按计数排序

c# - 在 ASP.NET MVC 4 Razor 中,如何获取 @Html.Label 的值(文本)?