在表单加载时,下面的代码运行良好。它在一个以计时器(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);
}
}
答案 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();
}
}