C++ Qt QSqlDatabase和QSqlTableModel与PostgreSQL视图的兼容性?
我在PostgreSQL视图上使用QSqlTableModel时遇到了一个问题。让我先在这里显示相关代码 使用在PostgreSQL 9.2.4上运行的以下代码创建视图: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
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这有什么关系?用新版本测试,如果它解决了问题,那么寻找修复它的提交和后端口。。。