自定义QSqlTableModel获取多个数据库数据到data中
您可以自定义一个继承自QSqlTableModel的类,并在其中实现一个函数来获取多个数据库的数据。以下是一个示例代码:
#include <QSqlTableModel>
#include <QList>
class CustomSqlTableModel : public QSqlTableModel
{
public:
explicit CustomSqlTableModel(QObject *parent = nullptr, QSqlDatabase db = QSqlDatabase())
: QSqlTableModel(parent, db) {}
QList<QList<QVariant>> getMultipleData(const QStringList &tables)
{
QList<QList<QVariant>> data;
// 遍历多个表格
for (const QString &table : tables) {
// 设置当前表格
setTable(table);
// 设置排序
setSort(0, Qt::AscendingOrder);
// 提交所有挂起的操作
submitAll();
// 查询数据
select();
// 获取每一行的数据,并添加到data中
for (int row = 0; row < rowCount(); ++row) {
QList<QVariant> rowData;
for (int column = 0; column < columnCount(); ++column) {
rowData.append(data(index(row, column)).toString());
}
data.append(rowData);
}
}
return data;
}
};
使用示例:
QSqlDatabase db1 = QSqlDatabase::addDatabase("QSQLITE", "db1");
db1.setDatabaseName("path_to_db1");
db1.open();
QSqlDatabase db2 = QSqlDatabase::addDatabase("QSQLITE", "db2");
db2.setDatabaseName("path_to_db2");
db2.open();
QList<QVariant> tables1 = db1.tables();
QList<QVariant> tables2 = db2.tables();
CustomSqlTableModel model1(nullptr, db1);
CustomSqlTableModel model2(nullptr, db2);
// 获取多个数据库的数据
QList<QList<QVariant>> data1 = model1.getMultipleData(tables1);
QList<QList<QVariant>> data2 = model2.getMultipleData(tables2);
在上述代码中,首先创建了两个QSqlDatabase对象,分别用于连接两个不同的数据库。然后通过调用tables()函数获取每个数据库中的表格名。接下来,创建了两个CustomSqlTableModel对象,并通过传递对应的QSqlDatabase对象来指定数据库连接。最后,调用getMultipleData()函数获取每个数据库中的多个表格的数据
原文地址: https://www.cveoy.top/t/topic/hIml 著作权归作者所有。请勿转载和采集!