我之前通过使用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");
..
现在databasese是开放的,在查询您可以使用它们。记分贝变量的作用域的每DOC为:
{
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上清理
不同的Oracle数据库?在单独的物理主机上,还是单独的Oracle实例? [Oracle的dblink功能](http://www.stanford.edu/dept/itss/docs/oracle/10g/server.101/b10759/statements_5005.htm)比自行设置更好。 – 2011-03-29 05:08:04
是的,这两个数据库都在同一个物理主机上,这意味着我正在谈论2个实例。我的雇主希望我不使用dblink的原因是,有些用户没有权限查看这些实例中的所有表,因此如果我使用dblink进行查询,而具有较少权限的用户使用我的应用程序,他们将能够做出不希望的查询。 – kasper360 2011-03-29 05:20:46
数据库不是实例 - 一个实例可以容纳多个数据库。可能是授予访问权限(基于我希望的角色)到另一个数据库,不需要dblink,但真正的问题似乎是授予 – 2011-03-29 05:24:41