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

时间:2015-06-11 13:32:03

标签: c++ database postgresql qt qtsql

我正在尝试使用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来检索我想要的值?

1 个答案:

答案 0 :(得分:1)

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

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