Estou com problemas p inserir em um campo Clob no Oracle 10g. Antes tinhamos a versao 9i e o codigo usando o oracle.sql.Clob funcionava legal, porem migramos p 10 g e o codigo parou de funcionar. Mudamos o tipo de Clob p StringReader e voltou a funcionar, mas para textos muito extensos dá o seguinte erro: "ORA-01460: conversão não-implementada ou não-resolvível solicitada at oracle.jdbc.dbaccess.DBError… "
Pesquisei td na Web, em geral tem como capturar o campo clob e converter p string, mas não encontrei nda q funcionasse para INSERT…Alguem já passou por esse problema?
Segue o codigo:
public boolean save() throws SQLException{
Connection conn = DbManager.conectarOracle();
String query = "";
StringReader html = new StringReader(this.htmlObjeto);
try{
if (this.idObjetoRegistrado == 0){
query = "INSERT INTO dbsm.ufam_objetoregistrado " +
"(idobjetoregistrado, TipoObjeto_idTipoObjeto, idAluno,"+
"htmlObjeto, idRastreamento, horaAlteracao, dataAlteracao, codOperador) "+
"VALUES (?,?,?,?,?, sysdate, sysdate,?)";
System.out.println("*Query*");
System.out.println(query);
cSt = conn.prepareStatement(query);
cSt.setLong(1,this.retornaNextIdoObjetoRegistrado());
cSt.setInt(2,this.tipoObjeto_idTipoObjeto);
cSt.setString(3,this.idAluno);
cSt.setCharacterStream(4, html, this.htmlObjeto.length());
cSt.setString(5,this.idRastreamento);
cSt.setInt(6,this.codOperador);
cSt.executeUpdate();
//DbManager.close(cSt);
}
else{
st = conn.createStatement();
query = "update dbsm.ufam_objetoregistrado SET idObjetoRegistrado = '"+this.idObjetoRegistrado+"', TipoObjeto_idTipoObjeto = '"+this.tipoObjeto_idTipoObjeto+"', idAluno = '"+this.idAluno+"', htmlObjeto = '"+this.htmlObjeto+"', idRastreamento = '"+this.idRastreamento+"', horaAlteracao = '"+this.horaAlteracao+"', dataAlteracao = '"+this.dataAlteracao+"', codOperador = '"+this.codOperador+"'WHERE idObjetoRegistrado = '"+this.idObjetoRegistrado+"'";
st.executeUpdate(query);
//DbManager.close(st);
}
//System.out.println(query);
return (true);
}catch(SQLException ex){
ex.printStackTrace();
}
finally {
st.close();
cSt.close();
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {}
conn = null;
}
}
return(false);
}
