2012-11-17 67 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