所以基本上我的应用程序中有两个连接:
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。它几乎就像只有一个连接,但这就是为什么我专门打开两个不同的连接,一个用于读取,一个用于插入。
任何帮助或建议都会受到赞赏,也许我只是错过了一些明显的东西。
答案 0 :(得分:2)
您需要使用conn.Close()关闭连接。
或者更好,使用类似的东西:
using (MySqlConnection conn = new MySqlConnection(connectionString))
{
//Your code
}
using (MySqlConnection readConn = new MySqlConnection(connectionString))
{
//Your code
}
它将自动关闭连接;)