Précédent   Forum des professionnels en informatique > Bases de données > Oracle > Interfaces de programmation
Interfaces de programmation Forum d'entraide sur l'utilisation des API Oracle : Pré-compilateurs, OCI, OCCI, etc.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 08/02/2012, 11h59   #1
Invité régulier
 
Inscription : février 2010
Messages : 44
Détails du profil
Informations forums :
Inscription : février 2010
Messages : 44
Points : 5
Points : 5
Par défaut OCCI VS OCILIB

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
emmye est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/02/2012, 18h14   #2
Rédacteur/Modérateur
 
Avatar de Vincent Rogier
 
vincent rogier
Inscription : juillet 2007
Messages : 2 355
Détails du profil
Informations personnelles :
Nom : vincent rogier
Âge : 34

Informations forums :
Inscription : juillet 2007
Messages : 2 355
Points : 3 108
Points : 3 108
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
Vincent Rogier est déconnecté   Envoyer un message privé Réponse avec citation 20
Vieux 09/02/2012, 10h10   #3
Invité régulier
 
Inscription : février 2010
Messages : 44
Détails du profil
Informations forums :
Inscription : février 2010
Messages : 44
Points : 5
Points : 5
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:
Code :
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;
}
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".

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
emmye est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/02/2012, 11h17   #4
Rédacteur/Modérateur
 
Avatar de Vincent Rogier
 
vincent rogier
Inscription : juillet 2007
Messages : 2 355
Détails du profil
Informations personnelles :
Nom : vincent rogier
Âge : 34

Informations forums :
Inscription : juillet 2007
Messages : 2 355
Points : 3 108
Points : 3 108
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
Vincent Rogier est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/02/2012, 11h41   #5
Invité régulier
 
Inscription : février 2010
Messages : 44
Détails du profil
Informations forums :
Inscription : février 2010
Messages : 44
Points : 5
Points : 5
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
emmye est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 21h02.


 
 
 
 
Partenaires

Hébergement Web