Какая разница в подключении QSqlDatabase?

Многие учебники по QSqlDatabase запускают базу данных примерно так:

QSqlDatabase cn = QSqlDatabase::addDatabase("QSQLITE",QString::number(id));

Будет ли это отличаться от этого:

QSqlDatabase cn;
cn.addDatabase("QSQLITE",QString::number(id));

или это:

QSqlDatabase cn;
cn = QSqlDatabase::addDatabase("QSQLITE",QString::number(id));

0

Решение

QSqlDatabase::addDatabase добавляет базу данных в список подключений к базе данных и возвращает QSqlDatabase так

QSqlDatabase cn;
cn.addDatabase("QSQLITE",QString::number(id));

это неправильно, и это не будет работать. Конечно, следующий правильный

QSqlDatabase cn;
cn = QSqlDatabase::addDatabase("QSQLITE",QString::number(id));

Это эквивалентно

QSqlDatabase cn = QSqlDatabase::addDatabase("QSQLITE",QString::number(id));

Как указано Вот ты можешь позвонить addDatabase на экземпляре класса. Например, следующий код тоже работает (но я не думаю, что мы должны использовать это):

QSqlDatabase sdb,plus;
plus = sdb.addDatabase("QSQLITE");
plus.setDatabaseName("G:/Database/test.db");

if (!plus.open())
{
qDebug() << "not open";
}
1

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


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