已经是一个具有此连接的开放DataReader

时间:2014-03-03 18:59:58

标签: c# mysql .net

所以基本上我的应用程序中有两个连接:

conn = new MySqlConnection("server=" + ip + ";uid=" + user +";pwd=" + pass + ";database=" + db);
readconn = new MySqlConnection("server=" + ip + ";uid=" + user + ";pwd=" + pass + ";database=" + db);

我仅对执行语句使用conn,例如UPDATE和INSERT。然后,只有当有人加入处理SELECT语句的服务器时,才使用readconn

然后发生此错误似乎没有任何模式,除了它每次都是由相同的函数引起(它对conn连接上的事务执行INSERT查询)。

There is already an open DataReader associated with this Connection which must be closed first.

我不明白的是,此堆栈跟踪显示此错误发生在使用conn而非readconn的函数中。在conn上,永远不会有与之关联的DataReader。它几乎就像只有一个连接,但这就是为什么我专门打开两个不同的连接,一个用于读取,一个用于插入。

任何帮助或建议都会受到赞赏,也许我只是错过了一些明显的东西。

1 个答案:

答案 0 :(得分:2)

您需要使用conn.Close()关闭连接。

或者更好,使用类似的东西:

using (MySqlConnection conn = new MySqlConnection(connectionString))
{
//Your code
}

using (MySqlConnection readConn = new MySqlConnection(connectionString))
{
//Your code
}

它将自动关闭连接;)