2010-06-21 8 views
0

im essayant d'insérer une valeur BigInteger dans l'oracle database.im essayant comme ceci:comment insérer valeur BigInteger dans la base de données Oracle

BigInteger a=new BigInteger("4280972057205720579205792572075927209857"); 
String str=new String(a.toByteArray()); 

maintenant dans la base de données:

PerparedStatement pstmt=con.prepareStatement("insert into database values(?)"); 
pstmt.setString(1,str); 
pstmt.executeUpdate(); 

si im en utilisant str="hello" alors cela fonctionne bien. mais si im en utilisant str=new String(a.toByteArray()) alors rien (null) n'est inséré dans la base de données. pourquoi est-ce si.please expliquer et également suggérer une méthode pour le faire.

+0

mon type de données de la colonne dans la base de données est varchar2 (4000). – condinya

+0

bonjour les gars .... j'ai utilisé la méthode toString et cela fonctionne. Mais je veux savoir pourquoi je n'étais pas capable d'insérer en utilisant mon approche précédente. Y at-il un problème de compatibilité entre java String et oracle varchar2. – condinya

+0

La chaîne que vous avez créée contient probablement des valeurs d'octet illégales. Essayez de l'imprimer (avec _System.out.println_ ou similaire) avant d'appeler le SQL. –

Répondre

3

Documentation pour BigInteger.toByteArray():

Renvoie un tableau d'octets contenant la représentation en complément à deux de cette BigInteger. Le tableau d'octets sera en octets big-endian: l'octet le plus significatif est dans l'élément zéro.

Ceci n'a rien à voir avec le représenter en Decimal! Vous voulez utiliser BigInteger.toString() pour obtenir la chaîne.

Questions connexes