Problema al UPDATEAR un CLOB de Oracle
Buenas llevo un par de días intentado actualizar un campo CLOB de una BD Oracle 9i en un entorno WebLogic 8.1
Mi problema es que al igualar mi objeto CLOB clob = null; con algo que supuestamente devuelve un CLOB
while (rset.next()) {
clob = ( (OracleResultSet) rset).getCLOB(2);
}
obtengo un java.lang.ClassCastException. A ver si alguien ha pasado ya por esto y me ayuda, GRACIAS!!
Mi problema es que al igualar mi objeto CLOB clob = null; con algo que supuestamente devuelve un CLOB
while (rset.next()) {
clob = ( (OracleResultSet) rset).getCLOB(2);
}
obtengo un java.lang.ClassCastException. A ver si alguien ha pasado ya por esto y me ayuda, GRACIAS!!
long loLonKey = 0;
String loStrSql = "";
Connection loConConexion = null;
Class.forName(strNombreDriver);
loConConexion =
DriverManager.getConnection(strUrlConexion, strUser, strPassword);
/**Obtenemos el primary key de la tabla **/
Statement loStaSentencia = loConConexion.createStatement();
loStaSentencia.executeQuery(
"SELECT "+strColumnaSecuencia+".NextVal as key FROM DUAL ");
ResultSet loResResultado = loStaSentencia.getResultSet();
loResResultado.next();
loLonKey = loResResultado.getLong(1);
loStrSql =
"INSERT INTO "+strNombreTabla+" ("+strColumnaIdentificador+","+strColumnaDatos+") VALUES ("
+ loLonKey
+ ",EMPTY_CLOB())";
/**Insertamos una columna tipo CLOB*/
loConConexion.setAutoCommit(false);
PreparedStatement loPreSentenciaPreparada =
loConConexion.prepareStatement(loStrSql);
loPreSentenciaPreparada.executeUpdate();
loStaSentencia = loConConexion.createStatement();
loStaSentencia.executeQuery(
"SELECT "+strColumnaDatos+" FROM "+strNombreTabla+" WHERE "+strColumnaIdentificador+" = "
+ loLonKey
+ " FOR UPDATE");
loResResultado = loStaSentencia.getResultSet();
if (loResResultado.next()) {
oracle.sql.CLOB loCloXml =
(oracle.sql.CLOB) loResResultado.getClob(1);
OutputStream loOutFlujoSalida = loCloXml.getAsciiOutputStream();
OutputStreamWriter loOutFlujoCombinado =
new OutputStreamWriter(loOutFlujoSalida, "ISO-8859-1");
//System.out.println(inStrCadena.toString().toCharArray());
loOutFlujoCombinado.write(inStrCadena.toString().toCharArray());
loOutFlujoCombinado.flush();
loOutFlujoCombinado.close();
loOutFlujoSalida.close();
}
loConConexion.commit();
loPreSentenciaPreparada.close();
loConConexion.close();
return loLonKey;
String loStrSql = "";
Connection loConConexion = null;
Class.forName(strNombreDriver);
loConConexion =
DriverManager.getConnection(strUrlConexion, strUser, strPassword);
/**Obtenemos el primary key de la tabla **/
Statement loStaSentencia = loConConexion.createStatement();
loStaSentencia.executeQuery(
"SELECT "+strColumnaSecuencia+".NextVal as key FROM DUAL ");
ResultSet loResResultado = loStaSentencia.getResultSet();
loResResultado.next();
loLonKey = loResResultado.getLong(1);
loStrSql =
"INSERT INTO "+strNombreTabla+" ("+strColumnaIdentificador+","+strColumnaDatos+") VALUES ("
+ loLonKey
+ ",EMPTY_CLOB())";
/**Insertamos una columna tipo CLOB*/
loConConexion.setAutoCommit(false);
PreparedStatement loPreSentenciaPreparada =
loConConexion.prepareStatement(loStrSql);
loPreSentenciaPreparada.executeUpdate();
loStaSentencia = loConConexion.createStatement();
loStaSentencia.executeQuery(
"SELECT "+strColumnaDatos+" FROM "+strNombreTabla+" WHERE "+strColumnaIdentificador+" = "
+ loLonKey
+ " FOR UPDATE");
loResResultado = loStaSentencia.getResultSet();
if (loResResultado.next()) {
oracle.sql.CLOB loCloXml =
(oracle.sql.CLOB) loResResultado.getClob(1);
OutputStream loOutFlujoSalida = loCloXml.getAsciiOutputStream();
OutputStreamWriter loOutFlujoCombinado =
new OutputStreamWriter(loOutFlujoSalida, "ISO-8859-1");
//System.out.println(inStrCadena.toString().toCharArray());
loOutFlujoCombinado.write(inStrCadena.toString().toCharArray());
loOutFlujoCombinado.flush();
loOutFlujoCombinado.close();
loOutFlujoSalida.close();
}
loConConexion.commit();
loPreSentenciaPreparada.close();
loConConexion.close();
return loLonKey;