c# - 读取器关闭时读取数据的尝试无效错误
问题描述
在表单加载时,下面的代码运行良好。它以在计时器(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);
}
}
解决方案
您的代码块已更正如下,它可能对您有用:
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();
}
}
推荐阅读
- c# - 将数组作为 ref 传递给委托方法
- ios - iTunes Connect:应用程序在所有地区的可用性未反映
- spring - 向协议代理发布验证结果在 pact-jvm-provider-spring_2.12 中不起作用
- python - How do I fix syntax problems in my Python code
- google-maps - 父数据更新时,VueJS子组件GMAP不会重新渲染
- jquery - 在 TypeScript 中导入 jQuery 时,“无法调用类型缺少调用签名的表达式”
- android - 为什么我在 Kotlin 中使用委托时 isBackgroundWindow 返回错误?
- python - Pandas 数据框 - to_json() to_csv() 对于 iso 格式的日期的行为不同
- angular - 在角度元标记中显示特殊字符?
- postman - 邮递员:如何从响应中获取数字字符串值的计数