警告删除数据库

Jjr*_*ina 18 mysql database qt

我的代码显示了下一个警告:

QSqlDatabasePrivate::removeDatabase: connection ‘qt_sql_default_connection’ 
is still in  use, all queries will cease to work
Run Code Online (Sandbox Code Playgroud)

这是我的代码与数据库的连接很好:

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);
}
Run Code Online (Sandbox Code Playgroud)

m_db定义为:

 QSqlDatabase m_db;
Run Code Online (Sandbox Code Playgroud)

我的测试是:

database db;
qDebug() << "CONNECT: " << db.connect();
db.close();
Run Code Online (Sandbox Code Playgroud)

我该如何解决?

非常感谢你.

ale*_*sdm 32

关闭它后,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);
}
Run Code Online (Sandbox Code Playgroud)


sho*_*fee 5

void database::close()
{
    QString connection;
    connection = m_db.connectionName();
    m_db = QSQlDatabase();
    //m_db.close();
    m_db.removeDatabase(connection);
}
Run Code Online (Sandbox Code Playgroud)

试试这个它会工作..