检查datpader是否在Asp.net中有行

时间:2012-06-02 05:01:04

标签: 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没有要显示的记录。如果没有记录,标签应该显示由我预先指定的默认值或者如果在标签上有记录显示datareader值。 (假设SqlDataReader有1个重新编码或只有norecord)

如何检查第一个datareader hasRow与否?

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

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

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

    这种方式在Sqldatareader有norows时生成异常。

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

    请帮帮我。 TX

2 个答案:

答案 0 :(得分:7)

尝试...

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

答案 1 :(得分:3)

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