【发布时间】:2012-06-02 05:01:04
【问题描述】:
我的代码:
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 个 recode 或只有 norecord)
如何检查第一个数据读取器 hasRow 与否?
我已经尝试了上述代码的两种方法。
if(Dr1.read())- 这样工作正常。但在执行If语句后,标签上没有显示值,因为 read() 会增加指针。结果 label1 ,Label2.. 什么都没有显示。-
if (Dr1["empname"] != DBNull.Value)这种方式在Sqldatareader有norows时会产生异常。
error: System.InvalidOperationException: Invalid attempt to read when no data is present
请帮助我。交易
【问题讨论】:
标签: c# asp.net sql sqldatareader