• 11446阅读
  • 4回复

[提问]qt如何判断数据库的连接状态 [复制链接]

上一主题 下一主题
离线mgrmhc
 

只看楼主 倒序阅读 楼主  发表于: 2012-02-16
— 本帖被 yfx2003 从 《C++ GUI Qt 4编程》(第2版)专栏 移动到本区(2012-05-07) —
关键词: QSqlQueryexec
这个问题网络上讨论很久了,似乎一直没有完美的解决方法,这里再次提出,请大家讨论一下。
在程序中先连接一个数据库QSqlDatabase对象mysql连接服务器上的数据库,然后与之绑定一个QSqlQuery对象query,在网络及数据库正常的情况下,用query执行exec查询很正常,然而当网络从通变为不通时,正在执行的exec就会阻塞线程。qt中提供的QSqlQuery::isActive()函数,或者是QSqlDatabase::isValid()函数,不能得到当前服务器数据库的实际状态。如果每次查询之前都重新连接数据库也比较浪费时间和资源。如何用一个简便的方法能实时判断数据库的连接状态,在qt中似乎也找不到很好的解决方法,还请高人指点。
离线XChinux

只看该作者 1楼 发表于: 2012-02-16
写一个ping()方法,定时向服务器查询(比如select version();)
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线mgrmhc

只看该作者 2楼 发表于: 2012-02-17
谢谢XChinux 的指点,Ping方法能解决在部分情况下的连接状态判断,但它只能确定服务器的网络状态是否连通,而不能确定服务器上的数据库是否还在运行状态。
离线mgrmhc

只看该作者 3楼 发表于: 2012-02-17
在没有其它方法的情况下,ping可能是最佳解决方法。
离线枫行天下
只看该作者 4楼 发表于: 2012-09-03
就没有别的方法了么?
快速回复
限100 字节
 
上一个 下一个