IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Interfaces de programmation Oracle Discussion :

OCCI VS OCILIB


Sujet :

Interfaces de programmation Oracle

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2010
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 46
    Points : 33
    Points
    33
    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

  2. #2
    Rédacteur
    Avatar de Vincent Rogier
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 373
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 373
    Points : 5 307
    Points
    5 307
    Par défaut
    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

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2010
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 46
    Points : 33
    Points
    33
    Par défaut
    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 : 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;
    }
    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

  4. #4
    Rédacteur
    Avatar de Vincent Rogier
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 373
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 373
    Points : 5 307
    Points
    5 307
    Par défaut
    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

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2010
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 46
    Points : 33
    Points
    33
    Par défaut
    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

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. OCCI VS OCILIB
    Par emmye dans le forum C++
    Réponses: 0
    Dernier message: 08/02/2012, 11h59
  2. [OCILIB] Adresse IP du serveur base de données
    Par Abdelkaoui dans le forum Interfaces de programmation
    Réponses: 29
    Dernier message: 07/03/2008, 08h29
  3. Développement d'une extension php liée à ocilib
    Par grincheux01 dans le forum Visual C++
    Réponses: 4
    Dernier message: 22/02/2008, 18h55
  4. [OCCI] Nombre de colonnes ?
    Par Sceener dans le forum Interfaces de programmation
    Réponses: 0
    Dernier message: 02/08/2007, 13h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo