Qt关于mysql数据库断开重连的问题
2013-07-29 19:39
686 查看
1、通过lastError(),然后重新open()不能准确判断数据库是否断开。
if(query.lastError().type() !=0)
{
db.open().
...
}
2、通过query.exec(str)执行sql语句判断,重新初始化数据库、打开数据库,可行,经过反复测试。
boo succ = query.exec(strSelect);
if(!succ)
{
qDebug()<<"Reopen db.";
if(initDatabase())
{
query=QSqlQuery::QSqlQuery(m_db);
succ = query.exec(strSelect);
/*数据库会在没有打开的情况下,不对query重新赋予db关键字,执行sql语句会挂死*/
}
}
3、通过 isActive()、isOpen()判断,这是大家用得比较多的用法,我也暂时认为可行。个人认为在isActive()此处执行重新打开数据库会有点时间过晚。isOpen()判断后重新连接数据库可能比较优。
if(query.isActive())
{
if(initDatabase())
{
query=QSqlQuery::QSqlQuery(m_db);
succ = query.exec(strSelect);
/*数据库会在没有打开的情况下,不对query重新赋予db关键字,执行sql语句会挂死*/
}
}
if(query.lastError().type() !=0)
{
db.open().
...
}
2、通过query.exec(str)执行sql语句判断,重新初始化数据库、打开数据库,可行,经过反复测试。
boo succ = query.exec(strSelect);
if(!succ)
{
qDebug()<<"Reopen db.";
if(initDatabase())
{
query=QSqlQuery::QSqlQuery(m_db);
succ = query.exec(strSelect);
/*数据库会在没有打开的情况下,不对query重新赋予db关键字,执行sql语句会挂死*/
}
}
3、通过 isActive()、isOpen()判断,这是大家用得比较多的用法,我也暂时认为可行。个人认为在isActive()此处执行重新打开数据库会有点时间过晚。isOpen()判断后重新连接数据库可能比较优。
if(query.isActive())
{
if(initDatabase())
{
query=QSqlQuery::QSqlQuery(m_db);
succ = query.exec(strSelect);
/*数据库会在没有打开的情况下,不对query重新赋予db关键字,执行sql语句会挂死*/
}
}
相关文章推荐
- 关于LWIP断开网线后重连问题(热插拔问题)
- 关于mysql数据库8小时不进行操作连接自动断开问题的解决办法
- 关于C#Socket断开重连问题
- 关于LWIP断开网线后重连问题(热插拔问题)
- QTcpSocket断开后自动重连问题 auto connect after disconnected
- 关于Setup Factory打包MySQL数据库遇到的问题
- 关于Qt无法直接使用cout和cin的问题
- Qt工作历程-关于Qt加载速度太慢的问题
- 关于QT中evaluateJavaScript()函数返回值的处理问题
- qt5.8中关于mysql5.5数据库连接问题
- QT使用记录关于调用DLL库文件出现的问题
- #菜鸟新手EclipseJavaEE&MySQL&Tomcat#关于一个Eclipse中登陆界面通过连接MySQL数据库进行验证的小体验(感谢qq群友引燃的解答让我解决这个小问题)
- 解决关于导入数据到mysql数据库时出现的乱码问题
- QT中关于头文件一个很奇怪的问题
- 关于PHP+MYSQL数据库保存时间的问题
- 关于QT 无边框窗口移动问题
- 关于Qt5.6连接SQL sever的一些问题
- 关于MySQL数据库索引和ORDER BY子句的使用问题简介
- 关于Qt中的调试问题
- 关于使用navicat向sqlserver和mysql数据库导入excel的问题