当我尝试从数据库中获取位值时,它会出错。以下代码如下:
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
错误:
无数据时无效尝试读取。
答案 0 :(得分:5)
您必须先在数据阅读器上调用Read()
。
using(SqlDataReader dr = cmd.ExecuteReader())
{
while(dr.Read())
{
//now read the value(s)
}
}
如果你确定会有一个结果,
使用ExecuteScalar()
将是一种更好的方法:
b = (bool)cmd.ExecuteScalar();
答案 1 :(得分:2)
你必须调用SqldataReader的读取方法。
SqlDataReader dr = cmd.ExecuteReader();
while(dr.Read())
{
b = (bool)dr["ISADMIN"];
}