Je développe une application Qt où je veux interroger des données à partir de tables dans deux bases de données différentes à la fois. J'utilise Oracle comme base de données, mais mon employeur veut que j'y parvienne sans créer de lien de base de données entre les deux bases de données. J'ai donc pensé à développer un moteur de recherche cross base de données en utilisant les objets du module Qt sql. Mais il ne devrait pas être aussi complexe qu'un analyseur sql. Je veux juste des données de requête à partir de tables dans deux bases de données et les afficher dans une vue et faire ces requêtes en utilisant une interface commune. Mais selon ma connaissance Qt sql modules peuvent être utilisés pour interroger à partir de seulement 1 base de données. S'il y a quelqu'un qui a déjà fait ce genre de programmation ou quelqu'un qui a une idée à ce sujet, vos suggestions sont très appréciées. Merci beaucoup.Moteur de requête de base de données croisée pour base de données Oracle utilisant Qt
0
A
Répondre
0
J'ai fait quelque chose comme ça il y a quelque temps en ouvrant plusieurs connexions de base de données en utilisant QSqlDatabase.
Ainsi, inspiré de la documentation officielle, vous pouvez essayer quelque chose comme ceci:
//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");
..
Maintenant, les databasese sont ouverts et vous pouvez le les utiliser dans une requête. Prenez note de la portée des variables db selon la 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");
Voir removeDatabase sur le nettoyage
Questions connexes
- 1. Base de données et moteur de base de données pour site Web social
- 2. Création de copies de tables de base de données Oracle dans une base de données SQLite
- 3. Qt - Programmation de la base de données
- 4. SELECT RECORD DE ORACLE BASE DE DONNÉES
- 5. Meilleur endroit pour commencer Qt Interface de base de données
- 6. alias base de données Oracle
- 7. Document Base de données Oracle
- 8. Problème de base de données dans Qt
- 9. Requête de données de base pour iPhone
- 10. Base de données Oracle pour android
- 11. Lien de base de données Oracle
- 12. Opérations de base de données asynchrones avec une base de données Oracle utilisant C#, .NET?
- 13. Requête de base de données croisée SQL Server lorsque l'autre nom de base de données n'est pas connu à l'avance?
- 14. base de données clone oracle sans données
- 15. Problème de requête de base de données
- 16. lire une base de données oracle écrire dans une autre base de données oracle
- 17. Qt supprimer Erreurs de base de données
- 18. Bulding moteur de recherche pour grande base de données
- 19. Moteur de base de données basé sur les règles
- 20. Insérer dans la base de données oracle
- 21. Synchronisation de la base de données Oracle
- 22. Regroupement d'une requête de base de données
- 23. Oracle Base de données de performance liées
- 24. organisation de base de données Oracle
- 25. version de base de données Oracle
- 26. Espace de la base de données Oracle
- 27. Oracle erreur client de base de données
- 28. restauration de la base de données Oracle
- 29. Problème inspectdb de Django utilisant la base de données Oracle
- 30. moteur de base de données pour Windows Mobile
différentes bases de données Oracle? Sur des hôtes physiques distincts ou des instances Oracle séparées? [La fonctionnalité de dblink d'Oracle] (http://www.stanford.edu/dept/itss/docs/oracle/10g/server.101/b10759/statements_5005.htm) est une meilleure idée qu'une installation de roll-your-own. –
Oui, les deux bases de données sont dans le même hôte physique, ce qui signifie que je parle de 2 instances. La raison pour laquelle mon employeur veut que je n'utilise pas dblink est que certains utilisateurs n'ont pas les privilèges pour voir toutes les tables dans ces instances, donc si j'utilise dblink pour interroger et un utilisateur avec moins de privilèges utiliser mon application, ils seront capable de faire des requêtes non désirées. – kasper360
Les bases de données ne sont pas des instances: une instance peut contenir plusieurs bases de données. Pourrait être une question d'accorder l'accès (basé sur le rôle j'espère) à l'autre base de données, pas besoin de dblink mais le vrai problème semble être des subventions –