Programación en castellano
Inicio > Foros > Servidores de Aplicaciones J2EE > ClassCastException cuando intento hacer el cast Clob obj = (CLOB)rs.getClob(1);
-Foros de debate

Servidores de Aplicaciones J2EE
Lista de foros | Lista de mensajes de este foro

Privacidad: Recuerde que la información escrita en los foros de programación es 100% pública y que su ip será registrada asociada a su mensaje. Si encuentra un mensaje fuera de lugar, por favor, notifiquelo para su revisión y eliminación.

ClassCastException cuando intento hacer el cast Clob obj = (CLOB)rs.getClob(1);
Enviado por Rubén el día 2 de diciembre de 2003

La aplicación lanza un java.lang.ClassCastException cuando intento hacer el cast Clob obj = (CLOB)rs.getClob(1);

Estoy usando Oracle 9i, Bea Weblogic 8.1 yjava 1.4.1_03-b02,

he probado los drivers:
jdbc:oracle:oci8:@localhost:1521:INTRANET
jdbc:oracle:thin:@localhost:1521:INTRANET

y varias interface CLOB de Oracle:

weblogic.jdbc.rmi.SerialClob
import oracle.sql.CLOB;

y todo revienta, si alguien se ha enfrentado a este hijo de puta y me dice su punto de debil, me hará salir victorioso de una lucha que dura ya 4 días!!
GRACIAS !!


 
Re: ClassCastException cuando intento hacer el cast Clob obj = (CLOB)rs.getClob(1);
Enviado por Adriana el día 9 de diciembre de 2003

Unicamente recibelo como Clob obj = rx.getClob(1); no requiere de cast el tipo de dato ya existe en Java.

 

Re: ClassCastException cuando intento hacer el cast Clob obj = (CLOB)rs.getClob(1);
Enviado por PaneB el día 16 de diciembre de 2003

Si usas pool de WebLogic (como debiera ser tu caso) Bea crea un tipo wrapper para los tipos Clob. La lectura y escritura de estos tipos, si bien parece que está soportada por java, es del todo mentira. Usando \"java standar\" no podrás nunca guardar o leer un CLOB de más de 4K!!!

Para realizar estas operaciones deberás usar las clases propias de oracle:

Así, el fragmento para escribir en un campo CLOB:

CallableStatement cs = null;
cs = dbConn.prepareCall(\"begin DBMS_LOB.CREATETEMPORARY(?, TRUE,DBMS_LOB.SESSION); end;\");
cs.registerOutParameter(1, Types.CLOB);
cs.execute();
oracle.sql.CLOB clob = (oracle.sql.CLOB) ((weblogic.jdbc.wrapper.Clob)cs.getClob(1)).getVendorObj();
clob.putString(1, mensaje);

PreparedStatement ps = dbConn.prepareStatement(\"update mensaje SET mensaje=? where codigo = ?\");

ps.setClob(1, clob);
ps.setClob(2, 34);
...
Y esta función para leer un campo clob. El objeto que
se pasa se obtiene usando el método getObject de
resulset (no uses getClob).

private String readClob (Object obj) {
if (obj==null) return null;
BufferedReader bf=null;
StringBuffer out = new StringBuffer(100);
try {
bf = new BufferedReader(new InputStreamReader( ( (Clob)
obj).getAsciiStream()));

String line;
while ( (line = bf.readLine()) != null) {
out.append(line);
out.append(\"\\n\");
}
bf.close();
}
catch (Exception ex) {
out.setLength(0);
}
finally {
try {
bf.close();
}
catch (IOException ioe){
}
}

return (out.toString());
}


Espero que te funcione.

 
Re: Re: ClassCastException cuando intento hacer el cast Clob obj = (CLOB)rs.getClob(1);
Enviado por Diana el día 11 de marzo de 2004

Hola estuve mirando la respuesta dada, quisiera saber que funcionalidad tiene el metodo getVendorObj(); gracias!!!

 
Re: Re: Re: ClassCastException cuando intento hacer el cast Clob obj = (CLOB)rs.getClob(1)
Enviado por Grupo Mhol - Lima Peru - Ciber el día 15 de junio de 2006

Connection conn = getConnection();
CallableStatement cs = null;
cs = conn.prepareCall(" begin DBMS_LOB.CREATETEMPORARY(?, TRUE,DBMS_LOB.SESSION); end;/");
cs.registerOutParameter(1, Types.CLOB);
cs.execute();
oracle.sql.CLOB clob = (oracle.sql.CLOB) ((weblogic.jdbc.wrapper.Clob)cs.getClob(1)).getVendorObj();
clob.putString(1, mensaje);



PreparedStatement ps = conn.prepareStatement("update mensaje SET mensaje=? where codigo = ?\");

ps.setClob(1, clob);
ps.setClob(2, 34);

//PreparedStatement cs=null;
//boolean useOracleQuery = true;


//String oracleQuery = "begin ? := sp_set_doc(?,?,?,?,?,?,?,?,?,?,?,?,?,?); end;";
//String query = "{ call ? := sp_set_doc(?,?,?,?,?,?,?,?,?,?,?,?,?,?) }";
String query="insert into prueba_doc values(?,?,?,?,?,?,?,?,?,?,?,?,?,?)";

//String query = useOracleQuery ? oracleQuery : genericQuery;
try{

cs = conn.prepareCall(query);

cs.setString(1,entidad.getPeriodo());
cs.setString(2,entidad.getCodigoDocumento());
cs.setString(3,entidad.getTipoOrganizacion());
cs.setString(4,entidad.getCodigoOrganizacion());
cs.setString(5,entidad.getCodigoClase());
cs.setString(6,entidad.getNumeroDocumento());
cs.setString(7,entidad.getClave());
cs.setString(8,entidad.getArchivo());
cs.setString(9,entidad.getClasificacion());
cs.setString(10,entidad.getPrioridad());
cs.setString(11,entidad.getFecha());
cs.setString(12,entidad.getAsunto());
cs.setString(13,entidad.getEstado());


cs.setObject(14,entidad.getCuerpo());


cs.executeUpdate();

}catch(SQLException e){
System.out.println("se cayó");
System.out.println(e.toString());

}finally{
cs.close();
conn.close();
}

 




Tienda
Patrocinados
 

Copyright © 1999-2007 Programación en castellano. Todos los derechos reservados.
Formulario de Contacto - Datos legales - Publicidad

Hospedaje web y servidores dedicados linux por Ferca Network

red internet: musica mp3 | logos y melodias | hospedaje web linux | registro de dominios | servidores dedicados
más internet: comprar | recursos gratis | posicionamiento en buscadores | tienda virtual | gifs animados