0

こんにちは、 を読むのに問題がありますMySqlDataReader。私はに変更しようとしましたがwhile()if()それはうまくいきました。だから私は何か間違ったことをしていwhile (Reader.Read())ます。ご回答ありがとうございます。(今日の他の質問は修正されました。コメントしてくれた人が私を助けてくれましたxd)

using (MySqlCommand cmd = new MySqlCommand
      ("SELECT * FROM `citationer`",  mysqlCon))
{
    try
    {
        MySqlDataReader Reader = cmd.ExecuteReader();
        while (Reader.Read()) // this part is wrong somehow
        {
            citationstexter.Add(Reader.GetString(loopReading)); // this works
            loopReading++; // this works
        }
        Reader.Close();
    }

    catch (Exception ex)
    {
        MessageBox.Show(ex.Message);
    }
}
4

1 に答える 1

5

あなたの問題は、loopReadingパラメーター toの使用ですGetString。このパラメーターは、ゼロから始まる列の序数 (列番号) である必要がありますが、読み取る行ごとに増分します。

詳細については、こちらを参照してください: http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqldatareader.getstring.aspx

引用者テーブルの最初の列には 0、2 番目の列には 1 などを使用する必要があります。

また、使用することをお勧めします

  using(MySqlDataReader Reader = cmd.ExecuteReader()) 
  {
    ...
  }

mySqlCommand オブジェクトでメモリ リークを回避したのと同じように (ただし、これは問題ではありません)。

于 2011-04-09T17:45:42.867 に答える