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 用于引用表的第一列,将 1 用于第二列,等等。

此外,使用它是一个好习惯

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

就像您为 mySqlCommand 对象所做的那样以保存内存泄漏(但这不是您的问题。)

于 2011-04-09T17:45:42.867 回答