我的代码显示了下一个警告:
QSqlDatabasePrivate::removeDatabase: connection ‘qt_sql_default_connection’
is still in use, all queries will cease to work
这是我的代码,与数据库的连接很好:
QSqlDatabase database::db()
{
return m_db;
}
bool database::connect()
{
m_db = QSqlDatabase::addDatabase("QMYSQL");
m_db.setDatabaseName("aaaa");
m_db.setHostName("192.168.xxx.xxx");
m_db.setUserName("xx");
m_db.setPassword("xxxx");
m_db.setPort(1234);
return m_db.open();
}
void database::close()
{
QString connection;
connection = m_db.connectionName();
m_db.close();
m_db.removeDatabase(connection);
}
m_db定义为:
QSqlDatabase m_db;
我的测试是:
database db;
qDebug() << "CONNECT: " << db.connect();
db.close();
我该如何解决?
非常感谢你。
答案 0 :(得分:31)
关闭后,m_db
仍然保留对您在connect()
中配置的数据库的引用。
您可以通过指定默认构造的m_db
:
QSqlDatabase
void database::close()
{
QString connection;
connection = m_db.connectionName();
m_db.close();
m_db = QSqlDatabase();
m_db.removeDatabase(connection);
}
答案 1 :(得分:5)
void database::close()
{
QString connection;
connection = m_db.connectionName();
m_db = QSQlDatabase();
//m_db.close();
m_db.removeDatabase(connection);
}
试试这个会起作用..