MySqlDataReader dataReader=cmd.ExecuteReader()弹出窗口Form而不进入wh

本文关键字:Form 窗口 wh dataReader cmd ExecuteReader MySqlDataReader | 更新日期: 2023-09-27 17:59:55

我的连接工作正常。然而,当它运行到MysqlDataREader dataReader行时,它会显示Window Form,并且不会访问while循环来获取我的数据。我正在使用dataGridView来显示我的数据库中的信息。我做错了什么?感谢

    if (this.OpenConnection() == true)
    {
        //Create Command
        MySqlCommand cmd = new MySqlCommand(query, connection);
        //Create a data reader and Execute the command
        MySqlDataReader dataReader= cmd.ExecuteReader();
        //Read the data and store them in the list
        while (dataReader.Read())
        {
            list[0].Add(dataReader["id"] + "");
            list[1].Add(dataReader["name"] + "");
            list[2].Add(dataReader["weekday"] + "");
            list[3].Add(dataReader["description"] + "");
        }
        //close Data Reader
        dataReader.Close();
        //close Connection
        this.CloseConnection();
     }

MySqlDataReader dataReader=cmd.ExecuteReader()弹出窗口Form而不进入wh

命令是什么?

函数的作用是将读取器前进到下一条记录。如果没有返回任何记录,则If将立即为false。

因此,该命令很可能不会返回任何内容。你想做这样的事情(HandleRecord只是为了让代码更干净):

if(reader.Read())
{
    // Handle first record
    HandleRecord(dataReader)
    while(reader.Read())
    {
         // Handle remaining records
         HandleRecord(dataReader)
    }
}
else
{
    // Nothing was returned, do something
}

您还希望处理异常。从提供的代码来看,似乎没有try-catch finally语句。如果我没记错的话,应该是这样的:

 try
 {
     // Contact database - read/write/whatever
 }
 catch
 {
     // Display exception to user, log, whatever you need
 }
 finally
 {
     // Close database connection and other cleanup
 }