c++ - QSqlQueryModel 提示我的数据库没有打开

标签 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 来检索我想要的值?

最佳答案

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

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

关于c++ - QSqlQueryModel 提示我的数据库没有打开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30782279/

相关文章:

c++ - 如何在 GCC 中使用 OpenSSL?

MySQL 在 select 语句中出现子查询问题

postgresql - 如何连接到 Google Cloud SQL PostgresQL

c++ - 具有大量相互依赖条件的单元测试代码

c++ - 模板类和类模板有什么区别?

mysql - mysql如何向多个表中插入数据

perl - 可以在 DBI 的 selectcol_arrayref & Co. 中使用命名占位符吗?

python 安全 SQL 查询

c++ - swap 可以用来清除 std::set as vector 吗?

ruby-on-rails - 将上传文件的路径存储在数据库中