Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/140.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Qt QSqlDatabase和QSqlTableModel与PostgreSQL视图的兼容性?_C++_Qt_Postgresql_Qsqltablemodel - Fatal编程技术网

C++ Qt QSqlDatabase和QSqlTableModel与PostgreSQL视图的兼容性?

C++ Qt QSqlDatabase和QSqlTableModel与PostgreSQL视图的兼容性?,c++,qt,postgresql,qsqltablemodel,C++,Qt,Postgresql,Qsqltablemodel,我在PostgreSQL视图上使用QSqlTableModel时遇到了一个问题。让我先在这里显示相关代码 使用在PostgreSQL 9.2.4上运行的以下代码创建视图: CREATE OR REPLACE VIEW reporters_spaces_edit AS SELECT reporters.name AS reporter_name, spaces.name AS space_name, reporters_spaces.reporter_id IS NOT NULL A

我在PostgreSQL视图上使用QSqlTableModel时遇到了一个问题。让我先在这里显示相关代码

使用在PostgreSQL 9.2.4上运行的以下代码创建视图:

CREATE OR REPLACE VIEW reporters_spaces_edit AS 
 SELECT reporters.name AS reporter_name, spaces.name AS space_name, 
    reporters_spaces.reporter_id IS NOT NULL AND reporters_spaces.space_id IS NOT NULL AS linked
   FROM reporters
  CROSS JOIN spaces
   LEFT JOIN reporters_spaces ON reporters.id = reporters_spaces.reporter_id AND reporters_spaces.space_id = spaces.id;
<>我在VC2005上用Qt4.4.0编译的C++代码看起来是这样的:

void populateModel()
{
    QTableView lrView;
    QSqlDatabase lrDb(QSqlDatabase::addDatabase("QPSQL"));
    ...
    QSqlTableModel lrModel(lrDb);
    lrModel.setTable("reporters_spaces_edit");
    if (!lrModel.select())
    {
        QMessageBox::critical(
            0,
            tr("Database Error"),
            lrModel.lastError().text());
        return;
    }
    lrView.setModel(lrModle);
}
消息框上显示“找不到表报告器\u空间\u编辑”

我试图找出数据库中的所有视图。我添加了以下行:

QPlainTextEdit lrEdit;
lrEdit->setPlainText(lrDb.table(QSql::Views).join("\n"));
结果列表与

QPlainTextEdit lrEdit;
lrEdit->setPlainText(lrDb.table(QSql::Tables).join("\n"));
这是否意味着在PostgreSQL上运行时,QSqlTableModel不支持SQL视图


非常感谢

这很可能是一个bug。您使用的是非常旧的Qt版本。更新至4.8.5并重试。

谢谢您的回复。生产环境一直使用此旧版本:(我也很想在新版本上试用。@crackpot这有什么关系?用新版本测试,如果它解决了问题,那么寻找修复它的提交和后端口。。。