我正在开发一个Qt应用程序,我想一次查询来自2个不同数据库中的表的数据。我使用Oracle作为数据库,但我的雇主希望我在不在2个数据库之间建立数据库链接的情况下实现这一目标。所以我想到使用Qt sql模块对象开发一个跨数据库查询引擎。但它不应该像sql解析器那样复杂。我只想从两个数据库中的表中查询数据并在1个视图中显示它们并使用通用接口执行这些查询。但根据我的知识,Qt sql模块可以用于仅从1个数据库查询。如果有人之前做过这种编程或有人对此有所了解,那么您的建议将非常受欢迎。非常感谢你。
答案 0 :(得分:0)
通过使用QSqlDatabase打开多个数据库连接,我之前做过类似的事情。
因此,受官方文档的启发,您可以尝试这样的事情:
//Open database 1:
QSqlDatabase db1 = QSqlDatabase::addDatabase("QOCI","db1");
db.setHostName("acidalia");
db.setDatabaseName("tns1");
db.setUserName("mojito");
db.setPassword("J0a1m8");
bool ok = db.open();
..
//Open database 2:
QSqlDatabase db2 = QSqlDatabase::addDatabase("QOCI","db1");
..
db.setDatabaseName("tns2");
..
现在数据库已打开,您可以在查询中使用它们。根据doc:
记录db变量的范围 {
QSqlDatabase db = QSqlDatabase::database("db1");
QSqlQuery query("SELECT NAME, DOB FROM EMPLOYEES", db);
}
{
QSqlDatabase db = QSqlDatabase::database("db2");
QSqlQuery query("SELECT NAME, DOB FROM EMPLOYEES", db);
}
//Clean up
QSqlDatabase::removeDatabase("db1");
QSqlDatabase::removeDatabase("db2");
有关清理的信息,请参阅removeDatabase