读取器关闭错误时尝试读取数据无效

时间:2021-03-09 20:04:25

标签: c# winforms

在表单加载时,下面的代码运行良好。它在一个以计时器(5 秒间隔)运行的方法中运行代码。

我注意到它会在 DataGridView 中抛出错误之前填充 2 行。 不确定为什么它会抛出“阅读器关闭时无效的读取尝试错误”。

public void reloadDg()
{
  dg.Rows.Clear();
  dg.Refresh();

  try
  {
    TSID_POS = 0;
    conn.Open();
    using (var cmd = new MySqlCommand("SELECT * FROM table", conn))
    {
      using (MySqlDataReader reader = cmd.ExecuteReader())
      {
        while (reader.Read())
        {
          if (Convert.ToInt32(reader.GetString(0)) > TSID_POS)
          {
            TSID_POS = Convert.ToInt32(reader.GetString(0));
          }
          PartInfo[0] = reader.GetString(0);
          PartInfo[1] = reader.GetString(1);
          PartInfo[2] = reader.GetString(2);
          PartInfo[3] = reader.GetString(3);
          PartInfo[4] = reader.GetString(4);
          PartInfo[5] = reader.GetString(5);
          PartInfo[6] = reader.GetString(6); 
          PartInfo[7] = reader.GetString(7);
          this.ListParts.Rows.Insert(0, reader.GetString(0),
                                        reader.GetString(1),
                                        reader.GetString(2),
                                        reader.GetString(3),
                                        reader.GetString(4),
                                        reader.GetString(5),
                                        reader.GetString(6),
                                        reader.GetString(7));
        }
        reader.Close();
        reader.Dispose();
      }
      conn.Close();
      conn.Dispose();
      AR = 1;
    }
  }
  catch (Exception ex)
  {
    MessageBox.Show("Error:" + ex);
  }
}

1 个答案:

答案 0 :(得分:-1)

您的代码块已更正如下,它可能对您有用:

        try
        {
           .....

           using (MySqlConnection conn = new MySqlConnection(connString))
           {

            conn.Open();

            using (var cmd = new MySqlCommand("SELECT * FROM table", conn))
            {
                using (MySqlDataReader reader = cmd.ExecuteReader())
                {
                    while (reader.Read())
                    {                         

                        .....
                    }

                    reader.Close();                        
                }
                                    
                .....
            }

             conn.Close();
          }
        }           
相关问题