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