Механизм кросс-запросов к базе данных Oracle с использованием Qt - PullRequest
0 голосов
/ 29 марта 2011

Я занимаюсь разработкой приложения Qt, в котором я хочу запрашивать данные из таблиц в 2 разных базах данных одновременно. Я использую Oracle в качестве базы данных, но мой работодатель хочет, чтобы я достиг этого без создания связи между двумя базами данных. Поэтому я подумал о разработке механизма кросс-запросов к базе данных с использованием объектов модуля Qt sql. Но это не должно быть так сложно, как анализатор SQL. Я просто хочу запросить данные из таблиц в двух базах данных и отобразить их в 1 представлении и выполнить эти запросы, используя общий интерфейс. Но, насколько мне известно, модули Qt sql можно использовать для запроса только из 1 базы данных. Если есть кто-то, кто раньше занимался этим видом программирования, или кто-то, кто имеет представление об этом, ваши предложения очень ценятся. Большое спасибо.

1 Ответ

0 голосов
/ 03 мая 2011

Некоторое время назад я сделал что-то подобное, открыв несколько соединений с базой данных, используя 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");
 ..

Теперь базы данных открыты, и вы можете использовать их в запросе.Обратите внимание на область действия переменных db согласно 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 по очистке

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...