Saltar al contenido

Java: cómo insertar CLOB en la base de datos Oracle

Te recomendamos que pruebes esta solución en un ambiente controlado antes de pasarlo a producción, un saludo.

Solución:

La forma más fácil es simplemente usar el

stmt.setString(position, xml);

métodos (para cadenas “pequeñas” que se pueden guardar fácilmente en la memoria de Java), o

try 
  java.sql.Clob clob = 
    oracle.sql.CLOB.createTemporary(
      connection, false, oracle.sql.CLOB.DURATION_SESSION);

  clob.setString(1, xml);
  stmt.setClob(position, clob);
  stmt.execute();


// Important!
finally 
  clob.free();

ANTICUADO Vea la respuesta de Lukas Eder a continuación.

Con alrededor de 100 líneas de código 😉 Aquí hay un ejemplo.

El punto principal: a diferencia de otros controladores JDBC, el de Oracle no admite el uso Reader y InputStream como parámetros de un INSERT. En su lugar, debe SELECT los CLOB columna FOR UPDATE y luego escribir en el ResultSet

Le sugiero que mueva este código a un método/clase auxiliar. De lo contrario, contaminará el resto de su código.

pasando el contenido xml como string.

table1 

ID   int
XML  CLOB



import oracle.jdbc.OraclePreparedStatement;
/*
Your Code
*/
 void insert(int id, String xml)
    try 
        String sql = "INSERT INTO table1(ID,XML) VALUES ("
                + id
                + "', ? )";
        PreparedStatement ps = conn.prepareStatement(sql);
        ((OraclePreparedStatement) ps).setStringForClob(1, xml);
        ps.execute();
        result = true;
         catch (Exception e) 
        e.printStackTrace();
    
  

valoraciones y reseñas

Si te animas, eres capaz de dejar un enunciado acerca de qué te ha impresionado de este escrito.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *