Nyaruko
Nyaruko

Reputation: 4499

What's difference in connect a QSqlDatabase?

Many tutorials of QSqlDatabase start a database like this:

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

Would it be different from this:

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

or this:

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

Upvotes: 0

Views: 101

Answers (1)

Jablonski
Jablonski

Reputation: 18514

QSqlDatabase::addDatabase adds a database to the list of database connections and returns QSqlDatabase so

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

is wrong and it will not work. Of course next is correct

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

It is equivalent to

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

As pointed here you can call addDatabase on class instance. For example next code works too (but I don't think that we should use this):

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

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

Upvotes: 1

Related Questions