-4

当我试图从数据库中获取位值时,它会出错。下面给出以下代码:

SqlCommand cmd = new SqlCommand("SELECT ISADMIN FROM USER_DETAILS WHERE USER_NAME=@User AND ISPASSWORD=@Pass", con);
cmd.Parameters.AddWithValue("@User", cbUserName.Text);
cmd.Parameters.AddWithValue("Pass", txtPassword.Text);

SqlDataReader dr = cmd.ExecuteReader();

b = (bool)dr["ISADMIN"];//*Here it gives error

错误:

不存在数据时尝试读取无效。

4

2 回答 2

5

您必须先调用Read()数据阅读器。

using(SqlDataReader dr = cmd.ExecuteReader())
{
    while(dr.Read())
    {
         //now read the value(s)
    }
}

如果您确定会有一个结果,那么使用ExecuteScalar()将是一种更好的方法:

b = (bool)cmd.ExecuteScalar();
于 2012-11-17T06:26:45.210 回答
2

您必须调用 SqldataReader 的读取方法。

 SqlDataReader dr = cmd.ExecuteReader();

 while(dr.Read())
 {
 b = (bool)dr["ISADMIN"];
 }
于 2012-11-17T06:31:30.417 回答