警告删除数据库

时间:2012-03-01 16:12:37

标签: mysql database qt

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

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();

我该如何解决?

非常感谢你。

2 个答案:

答案 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);
}

试试这个会起作用..