jdbc instruction préparée avec oracle NUMÉRO de type
J'ai une application java qui établit une connexion jdbc à une Orcale base de données. Je cherche à insérer des données dans la base de données, mais je suis confus quand il s'agit de l'oracle type de NUMÉRO. J'ai trois colonnes dans ma table qui sont ces types, respectivement.
NUMBER(38,0)
NUMBER(20,0)
NUMBER(16,0)
Ma première question est de savoir quel type de type java, dois-je mettre les données, afin de l'utiliser dans une déclaration préparée.
Ma deuxième question est ce que l'opération de l'ensemble puis-je utiliser dans une déclaration préparée à l'avance afin d'insérer les données.
Permet de supposer que nous travaillons avec un certain NOMBRE(38,0). Aurais-je définir le type java de un BigInteger? Si j'avais un entier de 1 serait-il
BigInteger one = new BigInteger(1);
Ensuite dans mon preparedStatement il serait
PreparedStatement pstmt = conn.prepareStatement("INSERT INTO TABLE(bigInt) VALUES(?)");
pstmt.setLong(1, one);
Ce qui semble ne pas fonctionner, donc je suppose que ce n'est pas correct. Toute aide serait appréciée.
J'ai essayé setBigDecimal, c'est encore de me donner ORA-00911: caractère non valide. Je suis même à la construction et à l'impression de l'instruction sql insert et puis le coller dans sql developer et il fonctionne très bien. C'est seulement à défaut au sein de la java.
J'ai suivi quelques SORTE les mêmes questions à ce sujet..pas de réponses malheureusement 🙁 ..une réponse toutefois recommandé de le stocker en tant que chaîne de caractères..fait ce travail pour vous?
est que votre déclaration proprement dite, ou avez-vous modifié? Juste vous demander si vous avez laissé un point-virgule à la fin de la chaîne de commande - qui serait en SQL Developer mais jeter ORA-00911 via JDBC.
J'ai compris la question.. je suis embarrased-à-dire que, dans mon preparedStatment chaîne, j'ai ajouté un point-virgule à la fin conn.prepareStatement("INSERT INTO TABLE(bigInt) VALUES(?);"); Désolé.. je vous remercie pour l'aide
OriginalL'auteur medium | 2013-06-27
Vous devez vous connecter pour publier un commentaire.
setLong()
ne peut pas prendre uneBigInteger
. Si vous avez vraiment les valeurs de dépassement de la plage delong
dans votre base de données, alors vous pouvez avoir besoin d'utilisersetBigDecimal()
, comme il n'y a pas desetBigInteger()
, et votre variable devra être de typeBigDecimal
. Silong
englobe la plage de valeurs dans votre base de données, alors il suffit d'utiliserlong
etsetLong()
.OriginalL'auteur GriffeyDog
vous pouvez essayer de cette façon:
où
bigIntegerValue
est une instance dejava.math.BigInteger
, ça fonctionne pour moiOriginalL'auteur Marcio Duarte