Tengo una aplicación java, que establece una conexión jdbc a un Orcale de la base de datos. Estoy tratando de insertar datos en la base de datos pero estoy confuso cuando se trata de oracle el tipo de NÚMERO. Tengo tres columnas en mi mesa, que son de estos tipos, respectivamente.

NUMBER(38,0)
NUMBER(20,0)
NUMBER(16,0)

Mi primera pregunta es ¿qué tipo de tipo de java debo poner los datos, con el fin de usarlo en una declaración preparada.

Mi segunda pregunta es ¿qué operación set puedo usar en una declaración preparada con el fin de insertar los datos.

Le acaba de asumir que estamos trabajando con el NÚMERO(38,0). Habría de establecer el tipo de java a un BigInteger? Si yo tuviera un entero 1 sería

 BigInteger one = new BigInteger(1);

A continuación, en mi preparedStatement sería

 PreparedStatement pstmt = conn.prepareStatement("INSERT INTO TABLE(bigInt) VALUES(?)");
 pstmt.setLong(1, one);

Este parece que no funciona, así que yo supongo que esto no es correcto. Cualquier ayuda se agradece.

  • intenta setBigDecimal() docs.oracle.com/javase/6/docs/api/java/sql/…, java.de matemáticas.BigDecimal)
  • Traté de setBigDecimal, es que todavía me da ORA-00911: carácter no válido. Yo soy de la construcción y la impresión de la instrucción sql insert y, a continuación, pegarlo en sql developer y funciona bien. Es sólo no dentro de java.
  • He seguido un par de preguntas TAN similar a este..no hay respuestas por desgracia 🙁 ..una respuesta sin embargo sugerido para guardarlo como cadena..hace este trabajo para usted?
  • es que tu declaración, o se han editado? Sólo me preguntaba si te has dejado un punto y coma al final de la cadena de comando – para que trabaje en SQL Developer, pero tirar ORA-00911 a través de JDBC.
  • Me di cuenta de que el problema.. estoy vergüenza decir que en mi preparedStatment cadena he añadido un punto y coma al final de conn.prepareStatement(«INSERT INTO TABLA(bigInt) VALUES(?);»); Lo siento.. gracias por la ayuda
InformationsquelleAutor medium | 2013-06-27

2 Comentarios

  1. 5

    setLong() no puede tomar una BigInteger. Si usted realmente tiene valores que superan el rango de long en su base de datos, entonces usted puede necesitar usar setBigDecimal(), ya que no hay setBigInteger(), y su variable tendría que ser de tipo BigDecimal. Si long abarca el rango de valores en su base de datos, utilice sólo long y setLong().

  2. 3

    usted puede tratar de esta manera:

     oracle.sql.NUMBER numberValue = new oracle.sql.NUMBER(bigIntegerValue);
     cs.setObject(id, numberValue, OracleTypes.NUMBER);

    donde bigIntegerValue es una instancia de java.math.BigInteger, a mí me funciona

Dejar respuesta

Please enter your comment!
Please enter your name here