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

JDBC Java Discussion :

[JDBC] Insertion d'un numérique en erreur


Sujet :

JDBC Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Rédacteur

    Homme Profil pro
    Geek entrepreneur
    Inscrit en
    Novembre 2004
    Messages
    1 224
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Geek entrepreneur

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 224
    Par défaut [JDBC] Insertion d'un numérique en erreur
    Bonjour,

    J'ai eu des soucis avec une librairie et a force de chercher j'ai fini par mettre le doigt sur un souci d'insertion assez basique mais qui me laisse perplexe.

    J'ai une table comme suit :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    create table TESTDBUNIT
    (
    ID NUMERIC(5) IDENTITY PRIMARY KEY NOT NULL,
    FIELD_1 NUMERIC(1,0) default 0,
    FIELD_2 NUMERIC(1,0) default 0,
    )
    go
    D'après plusieurs docs, l'équivalent de NUMERIC est BigDecimal
    (http://jtds.sourceforge.net/typemap.html ou Hibernate)

    Cependant j'ai un souci avec le code suivant :

    Class.forName("com.sybase.jdbc2.jdbc.SybDriver");
    Connection conSybase = DriverManager.getConnection("jdbc:sybase:Tds:neptune.sungard-finance.fr:4126", "cis", "***");

    PreparedStatement stmt =conSybase.prepareStatement("INSERT INTO TESTDBUNIT VALUES (?, ?)");

    stmt.setLong(1,Long.valueOf(1));
    stmt.setBigDecimal(2,BigDecimal.valueOf(1));

    stmt.executeUpdate();
    stmt.close();
    conSybase.close();


    Des deux valeurs, seul celle initialisé avec setLong fonctionne. L'autre valeur est inséré a 0.

    Ca fonctionne dans tout les cas si j'ai un NUMERIC(5) à la place de NUMERIC(1), ca fonctionne.

    J'ai eu ce souci avec DBunit qui fait justement un mapping NUMERIC => BigDecimal.


    Personne n'a jamais rencontré ce problème ?

  2. #2
    Membre éclairé
    Homme Profil pro
    NoOb
    Inscrit en
    Mai 2007
    Messages
    554
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : NoOb

    Informations forums :
    Inscription : Mai 2007
    Messages : 554
    Par défaut
    Bonjour,

    Essaie d'instancier ton BigDecimal :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    stmt.setBigDecimal(2,new BigDecimal("1"));

  3. #3
    Rédacteur

    Homme Profil pro
    Geek entrepreneur
    Inscrit en
    Novembre 2004
    Messages
    1 224
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Geek entrepreneur

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 224
    Par défaut
    c'est ce que fait valueOf, ca doit revenir au même

    mais j'ai quand même testé pour la forme, ca revient au même

  4. #4
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    T'as essayé avec d'autres combinaisons driver/base de donnée? Peut-être un bug du driver :/

  5. #5
    Rédacteur

    Homme Profil pro
    Geek entrepreneur
    Inscrit en
    Novembre 2004
    Messages
    1 224
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Geek entrepreneur

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 224
    Par défaut
    effectivement avec le driver jtds ca fonctionne :

    Class.forName("net.sourceforge.jtds.jdbc.Driver");
    Connection conSybase = DriverManager.getConnection("jdbc:jtds:sybase://neptune:4126", "cis", "***");

Discussions similaires

  1. insert into : ou est l'erreur?
    Par ouldfella dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 02/04/2006, 15h46
  2. [JDBC] Insertion dans Access auto Increment
    Par sg-40 dans le forum JDBC
    Réponses: 4
    Dernier message: 09/11/2005, 22h14
  3. [Jdbc] insertion avec numero auto
    Par ice69 dans le forum JDBC
    Réponses: 2
    Dernier message: 31/10/2005, 19h19
  4. [JDBC]insertion donnée binaire dans bd
    Par MrX dans le forum JDBC
    Réponses: 1
    Dernier message: 05/10/2005, 14h18
  5. [JDBC] Insertion texte
    Par sebb84 dans le forum JDBC
    Réponses: 4
    Dernier message: 20/08/2004, 11h17

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