使用Qt跨Oracle数据库的数据库查询引擎

时间:2011-03-29 04:56:38

标签: database oracle qt cross-platform

我正在开发一个Qt应用程序,我想一次查询来自2个不同数据库中的表的数据。我使用Oracle作为数据库,但我的雇主希望我在不在2个数据库之间建立数据库链接的情况下实现这一目标。所以我想到使用Qt sql模块对象开发一个跨数据库查询引擎。但它不应该像sql解析器那样复杂。我只想从两个数据库中的表中查询数据并在1个视图中显示它们并使用通用接口执行这些查询。但根据我的知识,Qt sql模块可以用于仅从1个数据库查询。如果有人之前做过这种编程或有人对此有所了解,那么您的建议将非常受欢迎。非常感谢你。

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

相关问题