故障排除“已经有一个与此连接关联的打开的 DataReader,必须首先关闭它”
在您的代码中,您正在尝试当数据读取器仍然打开时执行另一个 SQL 语句(“Insert Into tblProduct_temp”),导致异常:“已经有与此连接关联的打开的 DataReader,必须首先关闭。”
原因:
当数据读取器打开时,MySQL 连接会在连接资源上保持独占锁。这可以防止其他操作在数据读取器关闭之前访问该连接。
解决方案:
要解决此问题,您必须在执行新操作之前关闭数据读取器SQL 语句。推荐的方法是使用 using 语句或 try-finally 块来确保读取器正确关闭,即使发生异常也是如此。
这是使用 using 语句修改后的代码:
using (MySqlConnection myConnection = new MySqlConnection(cf.GetConnectionString())) { myConnection.Open(); using (MySqlCommand myCommand = new MySqlCommand(SQL, myConnection)) { using (MySqlDataReader myReader = myCommand.ExecuteReader()) { if (myReader.HasRows) { int i = 0; while (myReader.Read()) { if (myReader["frProductid"].ToString() == "") { strInsertSQL = "Insert Into tblProduct_temp (Productid) Values('this istest') "; using (MySqlCommand cmdInserttblProductFrance = new MySqlCommand(strInsertSQL, myConnection)) { cmdInserttblProductFrance.ExecuteNonQuery(); } } } } } } }
以上是为什么我收到'已经有一个与此连接关联的打开的 DataReader,必须首先关闭该连接”?的详细内容。更多信息请关注PHP中文网其他相关文章!