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