我之前通過使用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