VC 多View连接mysql的发生CR_COMMANDS_OUT_OF_SYNC错误

hagx 2018-05-28 10:46:01
我的VC中有多个View,用了一个连接,每个view中都有查询mysql的可能,时间随机,现在发现一个问题,就是有时候查询时会出现CR_COMMANDS_OUT_OF_SYNC的问题,百度得知,这个是由于上一次的查询没有关闭时就去重新查询导致的,在多view中,确实可能会出现这样的问题,一个查询正在处理还未关闭的时候,另外一个view也有可能需要同一个链接做查询。那么这种情况如何避免呢?
1)我本来想采用消息,但是后来发现每个窗口都有自己的消息队列,即使发了消息过去,执行的时间也是随机的,没有办法同步。
2)对每个view采用不同的连接,这个的确可以避免,但是如果有4个view,还有主框架,那是不是要开5个链接?是不是要采用长链接,也就是开始运行时创建5个链接给不同的view,程序结束时断开?
3)可不可以采用短链接?也就是每次查询前创建链接,查询完后是释放数据集,关闭链接,下次再用再链接。这样链接就是“局部变量”了,不会冲突了吧?

4)以上说法对吗?或者大家有什么更好的办法,谢谢!
...全文
917 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
蒋晟 2018-06-17
  • 打赏
  • 举报
回复
每个连接数据库服务器端也要资源来维持的(比如轮询每个连接看看客户端是不是发过来了什么东西)。服务器端连接资源有限,比如你的服务器的max_connections设置成250的话,你一个实例就占了5个连接,那么只能有50个用户能同时使用你的程序。指令执行完立刻关掉连接的话,能够支持的用户数就多得多。
赵4老师 2018-06-07
  • 打赏
  • 举报
回复
每次查询前创建链接,查询完后是释放数据集,关闭链接,下次再用再链接。
叶恭介叶恭介 2018-06-06
  • 打赏
  • 举报
回复
程序在多线程下使用数据库吗?
叶恭介叶恭介 2018-06-06
  • 打赏
  • 举报
回复
或者你可以只开一个数据库连接。然后其它VIEW都使用这个数据库连接,不过这个数据库连接需要加互斥,不考虑性能的话
赵4老师 2018-05-28
  • 打赏
  • 举报
回复
百度搜相关关键字。

4,011

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 数据库
社区管理员
  • 数据库
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧