1. ホーム
  2. c#

[解決済み】データが存在しないのに読み込もうとする試みが無効である

2022-01-26 15:07:20

質問

    private void button1_Click(object sender, EventArgs e)
    {
        string name;
        name = textBox5.Text;
        SqlConnection con10 = new SqlConnection("con strn");
        SqlCommand cmd10 = new SqlCommand("select * from sumant where username=@name");
        cmd10.Parameters.AddWithValue("@name",name);
        cmd10.Connection = con10;
        cmd10.Connection.Open();//line 7
        SqlDataReader dr = cmd10.ExecuteReader();
    }

    if ( textBox2.Text == dr[2].ToString())
    {
        //do something;
    }

7行目までデバッグするとOKですが、それ以降は dr は例外を投げます。

データが存在しないのに読み込もうとしたのが無効です。

username=sumantのテーブルにはデータがあるので、なぜこのような例外が発生するのか理解できません。

if'ステートメントが正しいかどうか教えてください。また、どうすればこのエラーを修正できますか?

どのように解決するのですか?

を呼び出す必要があります。 DataReader.Read で結果を取得します。

SqlDataReader dr = cmd10.ExecuteReader();
if (dr.Read()) 
{
    // read data for first record here
}

DataReader.Read() が返されます。 bool 読み込むべきデータブロックがさらにあるかどうかを示すので、結果が1つ以上ある場合は、できます。

while (dr.Read()) 
{
    // read data for each record here
}