Qt:调用QSqlDatabase的removeDatabase提示QSqlDatabasePrivate::removeDatabase: connection ‘***’ is still in use, all queries will cease to work
Qt:调用QSqlDatabase的removeDatabase提示QSqlDatabasePrivate::removeDatabase: connection ‘***’ is still in use, all queries will cease to work
代码如下:
if (m_dbConn.isOpen())
{
QString strName = m_dbConn.connectionName();
m_dbConn.close();
QSqlDatabase::removeDatabase(strName);
}
如此调用,基本上是必现上述错误。跟踪发现,实际是QSqlDatabase对象的引用计数在回收时为2(预期是1)。但始终想不出原因,为什么会是2?反复检查也看不出问题所在。之后才发现这个m_dbConn成员变量,应该在removeDatabase之前销毁的。修改如下:
if (m_dbConn.isOpen())
{
QString strName = m_dbConn.connectionName();
m_dbConn.close();
m_dbConn = QSqlDatabase();
QSqlDatabase::removeDatabase(strName);
}
通过置空解决,测试通过。
转载请注明来源,谢谢。
有偿解决C++编程问题,承接项目定制开发;寻一份全职或兼职Windows C++开发工作。联系邮箱:[email protected]。