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

А потом я использую Insert в другом классе, определенном как Планировщик:

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

Когда я запускаю эту программу, Qt выводит предупреждение:

QSqlDatabasePrivate :: removeDatabase: соединение ‘qt_sql_default_connection’ все еще используется, все запросы перестанут работать.

QSqlDatabasePrivate :: addDatabase: повторяющееся имя соединения ‘qt_sql_default_connection’, старое соединение удалено.

кто-то сказал:

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

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]