-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)
    }
}

結果が1つだけになると確信している場合は、次の方法を使用ExecuteScalar()することをお勧めします。

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

SqldataReader の Read メソッドを呼び出す必要があります。

 SqlDataReader dr = cmd.ExecuteReader();

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