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

Langage Java Discussion :

insérer le caractère "€" en base Oracle depuis un batch JAVA


Sujet :

Langage Java

Vue hybride

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

    Informations forums :
    Inscription : Juin 2002
    Messages : 11
    Par défaut insérer le caractère "€" en base Oracle depuis un batch JAVA
    Bonjour,

    j'ai un batch java (jdk 1.4) qui lit un fichier csv en entrée (lecture ligne par ligne) composé de plusieurs colonnes.
    Le contenu de chacune des colonnes est inséré dans les colonnes correspondantes en base (base Oracle 9i).

    L'une des colonnes contient le caractère "€" (euro) parmi d'autres caractères. Je ne peux pas toucher au fichier en entrée.
    Lors de l'insertion en base, ce caractère n'est pas correctement inséré, car à la restitution il est n'est pas renvoyé tel quel. La base est bien configurée pour accepter ce caractère.
    Il faut donc que je modifie le batch. Y a-til une propriété à affecter ? Comment l'insérer correctement ?

    Voila mon code simplifié :
    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
     
    BufferedReader fluxReader = fluxReader = new BufferedReader(new FileReader(monFichier.csv));
    String ligneCourante = fluxReader.readLine();
    String tmp_tab[];
    while (ligneCourante != null) {
    			ligneCourante = fluxReader.readLine();
                            tmp_tab[] = ligneCourante.split(sep,15);
                            monObjet.setCode(tmp_tab[0]);
                            monObjet.setLibelle(tmp_tab[1]);
                            monObjet.setPrix(tmp_tab[2]);
    }
     
    // Ensuite chaque attribut de monObjet est inséré en base :
     
    monPreparedStatement.setString(1,monObjet.getCode());
    monPreparedStatement.setString(1,monObjet.getLibelle());
    monPreparedStatement.setString(1,monObjet.getPrix());
    monPreparedStatement.executeUpdate()
    C'est le prix qui pose problème...

    Avez-vous des idées ?
    D'avance merci

  2. #2
    Membre Expert
    Profil pro
    Fabrication GED
    Inscrit en
    Octobre 2005
    Messages
    1 405
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Fabrication GED

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 405
    Par défaut
    si ton "code simplifié" reflète la réalité, ceci ne fonctionnera pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    while (ligneCourante != null) {
    	ligneCourante = fluxReader.readLine();
                 tmp_tab[] = ligneCourante.split(sep,15);
    car la dernière instruction sera exécutée si ligneCourante == null !

    Si ce n'est pas le cas, merci de de nous montrer la trace de ce qui est renvoyé.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 11
    Par défaut
    C'est vrai, j'ai mal copié mon code (car il est plus complexe mais je n'ai mis que l'essentiel), en fait c'est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    String ligneCourante = fluxReader.readLine();
    String tmp_tab[];
    while (ligneCourante != null) {
                            tmp_tab[] = ligneCourante.split(sep,15);
                            monObjet.setCode(tmp_tab[0]);
                            monObjet.setLibelle(tmp_tab[1]);
                            monObjet.setPrix(tmp_tab[2]);
    			ligneCourante = fluxReader.readLine();
    }

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 11
    Par défaut
    J'ajoute que le batch tourne sous AIX et que c'est sous cet environnement que l'insertion du carctère "€" ne fonctionne pas.
    Si le batch tourne depuis Windows (lancé depuis Eclipse) cela fonctionne.
    Y a-t-il une propriété à affecter ?

    D'avance merci.

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    121
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 121
    Par défaut
    C'est peut-être un problème de code page de ton fichier CSV.
    Si ton fichier csv vient de windows (codes page Cp1252, ISO-8859-1...) et que tu le lis en UNIX,AIX...(codes pages UTF8,...)

    Par example pour lire de l' ISO-8859-1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    BufferedReader fluxReader=new BufferedReader(new InputStreamReader(new FileInputStream(filename),"ISO-8859-1"));

Discussions similaires

  1. Comment insérer des caractères spéciaux dans sa base de donnees
    Par YouKe dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 23/02/2015, 20h31
  2. Réponses: 1
    Dernier message: 28/08/2010, 10h30
  3. [Oracle Lite 10gR2] Accès base Oracle depuis Pocket PC
    Par Cereal123 dans le forum Oracle
    Réponses: 6
    Dernier message: 08/03/2007, 10h43
  4. [VBA]Connecter une base oracle depuis Excel
    Par roadster62 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 26/01/2006, 14h34
  5. [Oracle/Config] - Nouvelle base Oracle depuis une copie
    Par shaun_the_sheep dans le forum Oracle
    Réponses: 11
    Dernier message: 08/12/2004, 12h11

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