2014-09-20 399 views
1

首先,我花了几个小时寻找修复 - 也许我只是需要另一双眼睛在这个问题上。Mysql连接器 - MultipleActiveResultSets问题

我目前正在为自己编写一个c#应用程序(个人使用)。进出口运行最新的MySQL连接库从mysql.com

我的连接字符串是

public string SQLConnection = "Server=localhost;Database=data;Uid=root;Pwd=ascent;charset=utf8;MultipleActiveResultSets=True;"; 

我的问题是关于MultipleActiveResultSets=True;。当这包含在我的SQLConnection字符串中时,MySQL库无法连接。查看下面的PIC来查看我的发现

http://i62.tinypic.com/25a57p1.png完整的图像:http://i62.tinypic.com/25a57p1.png

MultipleActiveResultSets=True;从连接字符串删除,我得到这样的结果

http://i58.tinypic.com/2useaom.png完整的图像:http://i58.tinypic.com/2useaom.png

我获得了成功的连接。

MultipleActiveResultSets的原因是因为我在同一时间使用了2 MySqlDataReader - 但这是无法更改的。

如果有人知道为什么这是失败的,那么请建议您的修复。

我的本地MySQL服务器版本:5.6.17

+0

在try块中放置创建连接的地方。这就是它似乎下降的地方,所以你想要捕捉抛出的异常。这可能会告诉你什么是错的。 – AVee 2014-09-20 23:04:59

回答

0

这个问题不解决,但我发现周围的工作。

我从连接字符串中删除MultipleActiveResultSets=True;。然后我创建了一个从MySqlDataReader保存数据的列表,然后关闭阅读器并重新打开一个新列表,然后从数据库中获取其余数据。然后简单地将结果合并到列表中。

所以是的,一个临时修复。

如果有人知道正确的修复方法,那么请评论,否则我将使用我的临时修复。

谢谢你们。

8

我假设MySql连接器不支持MARS(多个活动结果集)。在这种情况下,你不能同时在多个地方使用它。

+2

我刚刚花了上周才知道MySQL线协议,我可以确认这是正确的; MySQL将无法支持多个活动结果集。您需要将数据缓冲到列表中,然后执行另一个查询或打开第二个连接。 – 2015-12-12 13:04:21

0

另一个可能导致性能下降但可用作快速修复的选项是为第二个阅读器打开另一个连接到数据库的连接,并在完成时关闭它。