如何使用QSqlQueryModel在QTableView中显示多次选择的结果

How to show the result of multiple selects in QTableView using QSqlQueryModel

本文关键字:选择 结果 显示 何使用 QSqlQueryModel QTableView      更新时间:2023-10-16

我使用以下方法在QTableView中显示select语句的结果。我应该如何修改此代码以显示同一QTableView中两个或多个不同select语句的结果?

QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
QString dbPath = "test1.db";
db.setDatabaseName(dbPath);
QSqlQueryModel *model = new CustomSqlModel();
QSqlQuery* query = new QSqlQuery(db);
query->prepare("SELECT * FROM MyTable");
query->exec();
model->setQuery(*query);
model->setHeaderData(0, Qt::Horizontal, "Col1");
model->setHeaderData(1, Qt::Horizontal, "Col2");
model->setHeaderData(2, Qt::Horizontal, "Col3");
QTableView* tableView = new QTableView();
tableView->setModel(model);

我需要将从另一个数据库test2.db中的同一个表中选择的数据附加到tableView中已经显示的数据。

要将一个查询的结果附加到另一个查询,请使用复合SELECT语句:

SELECT * FROM MyTable
UNION ALL
SELECT * FROM MyOtherTable

这要求子选择器具有相同的列数。

如果另一个表在另一个数据库中,则必须将其附加到第一个数据库:

db.exec("ATTACH '/somewhere/else/test2.db' AS test2");
...
query->prepare("SELECT * FROM MyTable UNION ALL SELECT * FROM test2.MyTable");