当我关闭MySql服务器时,我如何理解mysql服务器已经离开了我的Qt程序?
编辑:
在这里,我的审判:
当我关闭MySql时,我得到了这些结果,但我无法捕捉到MySql是关闭的。
我的代码片段是
QSqlQuery query(db);
query.exec("SELECT * From RequestIds");
qDebug()<<query.lastError();
qDebug()<<db.lastError()<<QTime::currentTime();
qDebug()<<db.isOpen();
qDebug()<<db.isValid();产出如下:
QSqlError(2006, "QMYSQL: Unable to execute query", "MySQL server has gone away")
QSqlError(-1, "", "") QTime("14:22:58")
true
true我不明白为什么db.isOpen()返回true。
发布于 2010-12-10 08:28:17
Qt中有一个与QSqlDatabase相关的bug::isOpen()。
发布于 2010-10-14 15:30:12
你的节目对周围的环境一无所知。如果有什么变化,您可以让操作系统通知您的程序,否则您将不得不测试自己。
如果数据库连接在程序之前关闭,则来自连接的状态应返回某种错误代码。您正在从连接函数检查状态吗?
编写一个打开窗口的简单程序,单击按钮,将其写入数据库。写入数据库后,程序应在窗口中显示状态。运行你的程序。按下按钮可以得到“受控”的响应。关闭数据库,然后再次单击按钮。
根据调试器和OS排队消息的能力,您可以通过调试器完成这一任务。
发布于 2010-10-14 15:56:49
如果您通过QSqlQuery::lastError()查询失败,则QSqlQuery::lastError()会给出一个错误。另外,QSqlDatabase::isOpen()应该报告连接的状态,QSqlDatabase::lastError()也是可用的。
https://stackoverflow.com/questions/3933744
复制相似问题