使用 MySqlDataReader 读取

Mar*_*cus 0 c# mysql connector

您好,我在阅读时遇到问题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);
    }
}
Run Code Online (Sandbox Code Playgroud)

O. *_*nes 5

您的问题是使用loopReading参数 to GetString。此参数应该是从零开始的列序号(列号),但您要为读取的每一行增加它。

有关更多信息,请参见此处:http : //msdn.microsoft.com/en-us/library/system.data.sqlclient.sqldatareader.getstring.aspx

您应该将 0 用于引文表的第一列,将 1 用于第二列,以此类推。

此外,使用

  using(MySqlDataReader Reader = cmd.ExecuteReader()) 
  {
    ...
  }
Run Code Online (Sandbox Code Playgroud)

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