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

QSqlQueryModel complains that my database is not open

本文关键字:数据库 我的 QSqlQueryModel      更新时间:2023-10-16

我正在尝试使用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);