Bonjour,
J'aimerai bien avoir quelques conseils à propos d'une connexion entre un programme en C++ (J'utilise VS2008) et une base de données Oracle (10g), que dois-je utiliser de préférence? OCCI ou bien OCILIB? Et pourquoi?
Merci
Bonjour,
J'aimerai bien avoir quelques conseils à propos d'une connexion entre un programme en C++ (J'utilise VS2008) et une base de données Oracle (10g), que dois-je utiliser de préférence? OCCI ou bien OCILIB? Et pourquoi?
Merci
OCCI est une API C++ qui wrappe OCI et qui utilise les constructs habituel du C++ (exceptions, STL, etc..).
Donc, cela peut être un choix "naturel" pour développer un appli Oracle en C++.
Mais elle souffre de 4 inconvénients :
- closed source
- Support partiel des possibilités d'OCI
- Gestion unicode pas évident
- Un inconvénient majeur : il faut utiliser un compilateur supporté et encore plus contraignant une version du compilateur adaptée à la version du client Oracle utilisée. Car chaque client Oracle ne supporte que des versions précises des compilateurs MSVC++ et GCC++ et autres CC++ propriétaires (quand cexu si sont supportés)
La dernière raison explique pourquoi OCCI n'a jamais été largement et unanimement utilisée, surtout quand il s'agit de développement portable sur plusieurs plateformes.
Cherches sur google. C'est impressionnant le nombre de post/articles sur le fait que la version d'OCCI d'un projet d'application ne matche pas l'équation compilo/version compilo/version Oracle.... Et oublies le support dynamique de version différentes de client Oracle....
Mais si l'équation compilo/version compilo/version Oracle est maitrisée et constante dans le temps, et si toutes les features dont tu as besoin sont supportées par OCCI, c'est un bon choix... Mais faut bien se tâter avant.
OCILIB est une API C portable sur toutes les plateformes Oracle et tout compilo C ANSI (32 et 64bits), supportant complément Unicode et toutes les features de OCI.
Les clients Oracle sont loadés dynamiquement et OCILIB s’adapte aux capacités de chaque client.
Personnellement,je ne voit pas d’inconvénient à OCILIB ( normal) si ce n'est que pour un développeur pur C++, cela est moins naturel à utiliser que OCCI...
Coté perfs, OCILIB est plus performant, surtout au niveau des binds et des arrays de binds du fait que OCCI doit bufferiser les données pour les récupérer/affecter aux objets C++ bindés...
Vincent Rogier.
Rubrique ORACLE : Accueil - Forum - Tutoriels - FAQ - Livres - Blog
Vous voulez contribuer à la rubrique Oracle ? Contactez la rubrique !
OCILIB (C Driver for Oracle)
Librairie C Open Source multi-plateformes pour accéder et manipuler des bases de données Oracle
Merci bien pour votre réponse J'ai opté pour le OCILIB, sauf qu'un message d'erreur s'affiche à chaque fois que je compile ce code:
le message qui s'affiche " Composant introuvable: Cette application n'a pas pu démarrer car ocilibia.dll est introuvable. La réinstallation de cette application peut corriger ce problème".
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 #include "ocilib.h" #pragma comment(lib, "ociliba.lib") int main() { OCI_Initialize(NULL, NULL, OCI_ENV_DEFAULT); OCI_Cleanup(); return 0; }
et
'testfin.exe': Loaded 'C:\Documents and Settings\administrateur\Mes documents\Visual Studio 2008\Projects\testfin\Debug\testfin.exe', Symbols loaded.
'testfin.exe': Loaded 'C:\WINDOWS\system32\ntdll.dll'
'testfin.exe': Loaded 'C:\WINDOWS\system32\kernel32.dll'
Debugger:: An unhandled non-continuable STATUS_DLL_NOT_FOUND exception was thrown during process load
The program '[4288] testfin.exe: Native' has exited with code -1073741515 (0xc0000135).
Comment puis-je résoudre ce problème? sachant que:
- J'ai ajouté ocilib.h au fichier des entêtes
-Dans Preproccessor definitions j'ai définit OCI_API=__stdcall;OCI_IMPORT_RUNTIME
- Dans include files j'ai ajouté le include
- Dans library file j'ai ajouté le lib32
Merci beaucoup
Il faut que l'exe puisse charger la dl.
Il faut qu'elle soit placée :
- ou dans le répertoire de l'exe
- ou dans un répertoire du PATH
- ou dans system32 de windows
Vincent Rogier.
Rubrique ORACLE : Accueil - Forum - Tutoriels - FAQ - Livres - Blog
Vous voulez contribuer à la rubrique Oracle ? Contactez la rubrique !
OCILIB (C Driver for Oracle)
Librairie C Open Source multi-plateformes pour accéder et manipuler des bases de données Oracle
J'ai déjà fait une copie sous system32 mais j'avais un problème de linker, j'ai mis par faute ocilibia.lib
Merci pour ton aide Vincent
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager