QSqlQueryModel 抱怨我的数据库没有打开

QSqlQueryModel complains that my database is not open

我正在尝试使用 QSqlQueryModel 从我的数据库中检索一些值,例如:

 QSqlDatabase db = QSqlDatabase::addDatabase("QPSQL", "test1");
 db.setHostName(Vars::strDbHost);
 db.setDatabaseName(Vars::strDbName);
 db.setPort(Vars::strDbPort);
 db.setUserName(Vars::strDbUsername);
 db.setPassword(Vars::strDbPassword);

 db.open()

 QSqlQueryModel model;
 model.setQuery(QString("SELECT * FROM users WHERE login=%2").arg(Vars::strUserLogin));

但我一直收到 QSqlQuery::exec: database not open 错误。

这是为什么,如何正确使用 QSqlQueryModel 来检索我想要的值?

您正在调用 setQuery 的错误版本。这仅适用于具有默认名称的数据库。在你的情况下,你需要调用 void QSqlQueryModel::setQuery(const QString &query, const QSqlDatabase &db):

model.setQuery(QString("SELECT * FROM users WHERE login=%2").arg(Vars::strUserLogin)
               , db);