2012-11-17 66 views
-3

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

SqlCommand cmd = new SqlCommand("SELECT ISADMIN FROM USER_DETAILS WHERE [email protected] AND [email protected]", 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 

错误:

Invalid attempt to read when no data is present.

+0

你确定数据被返回吗? –

+1

你真的认为你的问题是因为试图检索一点?如果是这样,那么你应该先尝试检索一个'int'。 –

回答

5

你必须首先请数据读取器Read()

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

如果确定有使用ExecuteScalar()将是一个更好的办法将是只有一个结果, :

b = (bool)cmd.ExecuteScalar(); 
+0

谢谢你......但是当我按你的选择行事时,它会带来另一个问题。 指定的转换无效。 –

2

你必须调用SqlDataReader对象的Read方法。

SqlDataReader dr = cmd.ExecuteReader(); 

while(dr.Read()) 
{ 
b = (bool)dr["ISADMIN"]; 
} 
+0

谢谢你....但通过你的过程它给出了一个错误 “指定的转换无效。” –

+0

数据库中ISADMIN的数据类型是什么? –

+1

@KumarSaurav此错误可能发生,因为它可能从数据库返回空值,请检查它。 – Gayatri