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 :

[PRO*C] Utiliser wchar_t


Sujet :

Interfaces de programmation Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 17
    Par défaut [PRO*C] Utiliser wchar_t
    Bonjour,

    Je commence en base de données et je voudrai savoir si quelqu'un connait un moyen d'utiliser wchar_t avec pro c. Merci de vos réponses.

  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
    Oracle supporte les chaines Unicode de type UTF-16/UCS-16 (taille fixe sur 2 bytes).

    Le type C utilisé par Oracle est "utext".

    Sous Windows, wchar_t est implémenté sur 2 bytes. Donc il y a une correspondance implicite entre wchar_t et le type oracle utext.

    Sous Linux et autres unixes, wchar_t est souvent implémenté sur 4 bytes. Dans ce cas, wchar_t est incompatible avec utext.

    Pro*C ne supporte les chaines unicode que pour les variables utilisateur utilisées pour les binds dans les requêtes.

    Les ordres SQL sont eux uniquement supporté en ANSI (char*) .

    Enfin, il faut aussiinclure le header "sqlucs2.h" pour gérer les chaines unicode en pro*c

    Exemple tiré des docs PRO*C :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
     
    #include <sqlca.h>
    #include <sqlucs2.h>
     
    main()
    {
    utext employee1[20] ;
     
    /* Change to STRING datatype: */
    EXEC ORACLE OPTION (CHAR_MAP=STRING) ;
     
    utext employee2[20] ;
     
    EXEC SQL CREATE TABLE emp (ename CHAR(60)) ;
    ...
     
    /***********************************************************
    Initializing employee1 or employee2 is compiler-dependent.
    **********************************************************/
     
    EXEC SQL INSERT INTO emp (ename) VALUES (:employee1) ;
     
    ...
     
    EXEC SQL SELECT ename INTO :employee2 FROM emp;
     
    /* employee2 is now not blank-padded and is null-terminated */
    ...
    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 averti
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 17
    Par défaut
    ca veut dire que si je lis un fichier unicode il doit etre utf-16? comment est ce qu'on arrive a intégrer dans Oracle un fichier unicode sous unix?

  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
    Sous unix, si ton flux externe est récupéré sous forme de wchar_t, il te faudra le convertir en UTF-16 pour l'intégrer dans Oracle
    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 averti
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 17
    Par défaut
    donc intégrer un fichier encodé UTF-8 dans une base Oracle ne se passe pas bien sous Linux?

  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
    UTF8, c'est particuliers car cela peut être géré comme des char *.

    Il faut faire juste attention à la longueur des chaines. Une colonne VARCHAR2(30) c'est 30 bytes et pas 30 caractères. Alors qu'une colonne VARCHAR2(30 CHAR) c'est caractères qui peut être 90 bytes.
    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

Discussions similaires

  1. Besoin d'un pro WP8 - Utilisation WebService [Urgent]
    Par freaks88 dans le forum Windows Phone
    Réponses: 5
    Dernier message: 05/05/2014, 06h52
  2. Défragmentation Win XP pro en utilisant disque dur externe
    Par benito9253 dans le forum Windows XP
    Réponses: 4
    Dernier message: 31/10/2009, 13h37
  3. Utilisation des wchar_t
    Par Emmanuel Delahaye dans le forum Bibliothèque standard
    Réponses: 6
    Dernier message: 07/06/2008, 11h36
  4. [XP Pro] Utiliser un "hard link"
    Par Caine dans le forum Windows XP
    Réponses: 2
    Dernier message: 01/12/2005, 12h57
  5. Utilisation du XML dans C++Builder 6 Pro
    Par Faith's Fall dans le forum C++Builder
    Réponses: 15
    Dernier message: 08/03/2005, 15h08

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