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 :
D'après plusieurs docs, l'équivalent de NUMERIC est BigDecimal
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
(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 ?
Partager