0

こんにちは、OleDb を使用してデータベースに接続しようとしていますが、そこからデータを読み取り、その後 Read() コマンドを使用したい場合

cmd.Parameters.Add("@name", TextBox1.Text);
cmd.Parameters.Add("@password", TextBox2.Text);
cmd.ExecuteNonQuery();
System.Data.OleDb.OleDbDataReader rdr = cmd.ExecuteReader();
while (rdr.Read()) 
{                      
    string istifadeciAd = (string)rdr.GetString(1);
    string istifadeciParol = (string)rdr.GetString(2);
}

String istifadeciAd および istifadeciParol で、IndexoutofRange が原因で GetString のエラーが発生しました。しかし、列インデックスを指定して GetString を呼び出す必要はありませんか?

4

1 に答える 1

3

取得するには、選択ステートメントに2つ以上の選択列が必要ですrdr.GetString(2)

以下のようなもの

select id, istifadeciAd, istifadeciParol from Table1 where name =? and password =?

インデックスはゼロベースであることに注意してください

したがって、列のみを選択する場合は、次istifadeciAd, istifadeciParolのように読み取る必要があります

string istifadeciAd = rdr.GetString(0);
string istifadeciParol = rdr.GetString(1);

stringまた、結果をにキャストする必要はありません。string

コードを追加するパラメータも変更する必要があると思いますが、

cmd.Parameters.AddWithValue("@name", TextBox1.Text);
cmd.Parameters.AddWithValue("@password", TextBox2.Text);
于 2013-08-27T06:10:47.007 に答える