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 :

connexion bddoracle en C/C++


Sujet :

Interfaces de programmation Oracle

  1. #1
    Membre émérite
    Avatar de michel.di
    Homme Profil pro
    Freelance
    Inscrit en
    Juin 2009
    Messages
    782
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 782
    Par défaut connexion bddoracle en C/C++
    Bonjour,
    Désolé pour le double post, j'ai utilisé le mauvais pseudo!
    j'ai un petit problème:
    je dois faire communiquer mon appli en C/C++ avec une base de données sous Oracle. j'ai pu voir sur le site un tuto http://vicenzo.developpez.com/tutoriels/c/ocilib

    Est-ce le seul moyen? Est-on obligé d'installer des dll externes pour faire ceci ?

    Merci d'avance pour votre aide

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

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 373
    Par défaut
    Salut,

    pour accéder à oracle, il te faut une API cliente.
    Oracle fournit des API C (OCI) et C++ (OCCI) pour accéder à des bases de données Oracle.

    Ensuite, il existe des wrappers autour de OCI (qui est une API tres complexe) comme OCILIB. Les frameworks comme Qt implementent leurs drivers sur OCI.

    OCCI est un mauvais choix car :
    - tres tres buggé depuis sa création
    - peu de compilateurs supportés (de plus peu de versions de ceci)

    Il existe aussi 2 drivers commerciaux qui implémentent eux meme le protocole réseau d'Oracle (SQL*NET). Mais c'est pas donné et toujours risqué car Oracle ne documentant pas ce protocole, les futures compatibilités sont pas sures (mais bon...)

    Donc, au final, tu es olbigé de te baser sur un client Oracle.

    depuis 10g, Oraclle ayant compris que c'était galère d'installer en runtime un client oracle, de plusieurs centaines de Mégas , avec installateur et tout les tralala, fournit aussi un "Instant client". Ce client est réduit à 2-3 librairies partagées que tu peux redistribuer avec ton appli.

    Donc, maintenant, à toi de choisir ton API utilisateur, OCILIB ou autre !
    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
    Membre émérite
    Avatar de michel.di
    Homme Profil pro
    Freelance
    Inscrit en
    Juin 2009
    Messages
    782
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 782
    Par défaut
    merci beaucoup pour ta réponse très détaillée!
    je vais voir avec ma boite si OCILIB leur convient!

    merci encore

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

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 373
    Par défaut
    - si tu codes nativement en C++ et que tu utilises à fond la STL, OTL peut être très intéressant (quoi que moins performant que OCILIB et beaucoup moins riche) et lui aussi en open source

    - si tu codes en C ou en C++ mais que utiliser une API C t'es égal, OCILIB est le wrapper C le plus abouti, le plus riche et le plus mature.

    Les autres wrappers/librairies C/C++ au dessus de OCI ne valent pas le coup (buggés, peu de support des fonctionnalités Oracle, non maintenues..).

    Maintenant, si tu utilise un framework particuliers comme Qt ou autre, vois s'ils non pas leur propre driver...

    Encore une fois, OCILIB est l'API qui supporte le plus de fonctionnalités Oracle... Ne serait-ce que la clause SQL "returning into", le full support des objets, des collections, l'unicode, le mulithreading by oracle, etc...
    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
    Membre expérimenté Avatar de Grulim
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    234
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 234
    Par défaut
    Ca n'empêche pas l'installation de dll oracle, mais Pro*C (du C/C++ avec un préprocesseur sauce Oracle) permet de travailler avec une base Oracle, de manière simple et efficace.
    De plus, ce n'est pas très compliqué à mettre en oeuvre.

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

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 373
    Par défaut
    Effectivement, Pro*C est une option...

    Ce qui me derange énormément, avec Pro*C :

    - tu dois compiler un binaire pour chaque version d'oracle ( par exemple au taf, je compile 5 versions de mes applis PRO*C (8.17, 9.0; 9.2, 10.2, 11.1)... C'es chiant !
    - tu dois avoir un client Oracle pour compiler (c'est con, mais c'est pratique de pouvoir compiler hors environnement oracle)
    - créer une librairie en pro*c (statique / shared) et qui plus est en multithread (ca, c'est galère)
    - faible support pour C99 (on est en 2009, hum...)
    - peu adapté au multi-tiers (pour sur !)
    - tu as déjà vu la tête d'un fichier *.c généré par PRO*C ? (c'est une plaie à débugger !)
    - faible support Unicode (on est en 2009..hum..)
    - gestion des curseurs archaïque et rigide
    - couvre beaucoup moins de fonctionnalités Oracle que OCI

    Pour moi, le seul intérêt de pro*c est la vérification du code SQL à la précompilation et c'est assez productif

    Et si aucun des points cités ne gêne michel.di, qu'il envisage donc aussi PRO*C

    J'utilise PRO*C quotidiennement au taf... C'est une bon produit mais je préfère mille fois faire du OCI...
    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

  7. #7
    Membre expérimenté Avatar de Grulim
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    234
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 234
    Par défaut
    Citation Envoyé par Vincent Rogier Voir le message
    - tu dois compiler un binaire pour chaque version d'oracle ( par exemple au taf, je compile 5 versions de mes applis PRO*C (8.17, 9.0; 9.2, 10.2, 11.1)... C'es chiant !
    La société pour laquelle j'ai développé en PRO*C a une approche assez Unix : on ne change pas quelque chose qui marche, donc dans la boite il n'y a qu'une version d'Oracle, une chance !
    Citation Envoyé par Vincent Rogier Voir le message
    - tu dois avoir un client Oracle pour compiler (c'est con, mais c'est pratique de pouvoir compiler hors environnement oracle)
    Il me semble qu'il existe un package ou il n'y a que les lib nécessaires
    Citation Envoyé par Vincent Rogier Voir le message
    - faible support pour C99 (on est en 2009, hum...)
    Sans parler des limitations inhérentes au préprocesseur qui limite les possibilités (#define vs enum, par exemple).
    Citation Envoyé par Vincent Rogier Voir le message
    - tu as déjà vu la tête d'un fichier *.c généré par PRO*C ? (c'est une plaie à débugger !)
    Je m'en suis sorti (IBM/AIX)
    Citation Envoyé par Vincent Rogier Voir le message
    - faible support Unicode (on est en 2009..hum..)
    Parles-tu des wchar_t ?
    Citation Envoyé par Vincent Rogier Voir le message
    Pour moi, le seul intérêt de pro*c est la vérification du code SQL à la précompilation et c'est assez productif
    Tout à fait d'accord !

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

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 373
    Par défaut
    Citation Envoyé par Grulim Voir le message
    La société pour laquelle j'ai développé en PRO*C a une approche assez Unix : on ne change pas quelque chose qui marche, donc dans la boite il n'y a qu'une version d'Oracle, une chance !
    Moi, j'ai pas le choix de la version Oracle (imposée) des clients, nous devons donc nous adaper (que ce soit sous windows ou unix)

    Il me semble qu'il existe un package ou il n'y a que les lib nécessaires
    Pour le runtime, pas pour la compilation !
    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

  9. #9
    Membre expérimenté Avatar de Grulim
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    234
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 234
    Par défaut
    Citation Envoyé par Vincent Rogier Voir le message
    Pour le runtime, pas pour la compilation !
    Je parle bien de la compilation, mais je confonds peut-être, ou bien c'était une solution maison (et sous Unix).

  10. #10
    Membre éclairé
    Inscrit en
    Juillet 2007
    Messages
    357
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 357
    Par défaut
    il y a aussi l odbc avec les recordsets MFC , c est pas le plus pro mais pour coder rapidement c est parfais

  11. #11
    Membre émérite
    Avatar de michel.di
    Homme Profil pro
    Freelance
    Inscrit en
    Juin 2009
    Messages
    782
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 782
    Par défaut
    pour finir on a utilisé une lib oci!
    merci a tous pour voter aide
    je marque le topic comme résolu

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

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 373
    Par défaut
    laquelle ? (juste pour info...)

    Citation Envoyé par michel.di Voir le message
    pour finir on a utilisé une lib oci!
    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

  13. #13
    Membre émérite
    Avatar de michel.di
    Homme Profil pro
    Freelance
    Inscrit en
    Juin 2009
    Messages
    782
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 782
    Par défaut
    Je ne sais pas trop en fait car elle était présente dans les librairies d'Oracle et porte le nom de oci.h
    Je vais essayer d'en savoir plus cet après-midi au boulot!

    Je te remercie en tout cas pour m'avoir aidé à résoudre mes nombreux problèmes et pour le temps que tu m'as accordé!

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

Discussions similaires

  1. [Kylix] [cgi] pb déploiement appli avec connexion MySQL [rés
    Par Nepomiachty Olivier dans le forum EDI
    Réponses: 3
    Dernier message: 06/08/2002, 20h09
  2. [CR 8.5][Web] demande de connexion récurrente.
    Par Edison dans le forum Connectivité
    Réponses: 4
    Dernier message: 09/07/2002, 17h48
  3. Réponses: 4
    Dernier message: 04/07/2002, 12h31
  4. Connexion ODBC
    Par Anonymous dans le forum Réseau
    Réponses: 2
    Dernier message: 23/04/2002, 12h10
  5. Je ne peux établir une connexion cliente sous Linux.
    Par Anonymous dans le forum CORBA
    Réponses: 5
    Dernier message: 16/04/2002, 15h57

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