QSqlDatabase没有打印错误,没有输出?

时间:2014-04-13 13:16:41

标签: c++ mysql qt qtsql qsqldatabase

我使用QSqlDatabase将数据插入mysql。

首先,我定义了一个名为Inserter的类:

class Inserter
{
    QSqlDatabase db_connection;

public:
    Insert()
    {
        db_connection = QSqlDatabase::addDatabase("QMYSQL");

        db_connection.setDatabaseName("dbname");

        db_connection.setHostName("localhost");

        db_connection.setUserName("root");

        db_connection.setPassword("psd");

        if(!db_connection.open())
        {
            qDebug() << db_connection.lastError();
        }
    }
};

然后,我在另一个定义为Scheduler的类中使用Insert

class Scheduler
{
    Inserter inserter;
public:
    Scheduler()
    {
        inserter = Inserter();
    }
};

当我运行此程序时,Qt打印警告:

  

QSqlDatabasePrivate :: removeDatabase:连接'qt_sql_default_connection'仍在使用中,所有查询都将停止工作。

     

QSqlDatabasePrivate :: addDatabase:重复的连接名称'qt_sql_default_connection',删除旧连接。

someone said:

  

每个类型和连接名称应调用QSqlDatabase :: addDatabase()一次。多次调用addDatabase(“QMYSQL”)会导致QSqlDatabasePrivate::addDatabase: duplicate connection name 'qt_sql_default_connection', old connection removed.

     

此外,在删除数据库时使用现有的QSqlQuery对象会导致QSqlDatabasePrivate::removeDatabase: connection 'qt_sql_default_connection' is still in use, all queries will cease to work.

如果警告的上述原因是正确的,为什么警告的顺序不是:

  

QSqlDatabasePrivate :: addDatabase:重复的连接名称'qt_sql_default_connection',删除旧连接。

     

QSqlDatabasePrivate :: removeDatabase:连接'qt_sql_default_connection'仍在使用中,所有查询都将停止工作。

最后,我将初始代码移到类Scheduler,如下所示:

class Scheduler
{
    QSqlDatabase db_connection;

    void initDBConnection()
    {
        db_connection = QSqlDatabase::addDatabase("QMYSQL");

        db_connection.setDatabaseName("walmart");

        db_connection.setHostName("localhost");

        db_connection.setUserName("root");

        db_connection.setPassword("");

        if(!db_connection.open())
        {
            qDebug() << db_connection.lastError();
        }
    }

public:
    Scheduler()
    {
        initDBConnection();
    }
}; 

没有打印任何警告或错误。

0 个答案:

没有答案