Foros del Web » Programación para mayores de 30 ;) » Java »

No guarda en el campo Blob

Estas en el tema de No guarda en el campo Blob en el foro de Java en Foros del Web. Buenos dias. Soy nuevo en el foro, asi que gracias anticipadas a todos por su ayuda. Estoy programando en Netbeans JSP y quiero guardar una ...
  #1 (permalink)  
Antiguo 22/08/2012, 09:22
 
Fecha de Ingreso: agosto-2012
Ubicación: Aguascalientes
Mensajes: 3
Antigüedad: 11 años, 8 meses
Puntos: 1
No guarda en el campo Blob

Buenos dias.
Soy nuevo en el foro, asi que gracias anticipadas a todos por su ayuda.
Estoy programando en Netbeans JSP y quiero guardar una imagen en un campo blob que esta en Oracle, ya he revisado mucho del tema, pero no encuentro donde esta mi error, mi codigo es el siguiente:

public void save_file_ED(JspWriter out, Connection conection, String Ruta) throws SQLException,ClassNotFoundException,IllegalAccessE xception,InstantiationException {
PreparedStatement pstmt=null;
try {
conection.setAutoCommit(false);
pstmt=conection.prepareStatement(update <Tabla> set imagen=? where clave='1000' and hoja=2 and tipodocumento=10);
File file1 = new File(Ruta);
InputStream in = new FileInputStream(file1);
pstmt.setBinaryStream( 1 , in , (int) (file1.length()) );
pstmt.executeUpdate();
in.close();
pstmt.close();
pstmt=null;
conection.commit();
} catch(SQLException ex) {
conection.rollback();
System.out.println("Expediente.Carga] SQLError: "+ ex.getMessage() );
} catch(Exception e) {
System.out.println("[Documento.save_file_ED] Error: "+ e.getMessage());
} finally {
if (pstmt != null)
pstmt.close();
}
return;
};

la cuestión es de que no me marca ningún error, reviso en la tabla y no almaceno nada, esta null.

Como dato adicional, les comento que cambie la linea:
pstmt.setBinaryStream( 1 , in , (int) (file1.length()) );
por esto:
pstmt.setBinaryStream(1,in,(byte)file1.length());
y si me guarda algo, pero cuando la quiero ver en la consola de sql me dice que no se ha podido descodificar la imagen del flujo binario, aparte cuando en mi pagina recupero la imagen no me muestra nada.

Espero me puedan ayudar ya llevo 3 días y no encuentro el porque no me guarda la imagen.

Gracias.
  #2 (permalink)  
Antiguo 22/08/2012, 11:40
 
Fecha de Ingreso: junio-2008
Mensajes: 54
Antigüedad: 15 años, 9 meses
Puntos: 19
Respuesta: No guarda en el campo Blob

Miguel:

Veo en tu código que utilizas un Update para guardar la imagen. Puedes tratar de agregarlo como un registro nuevo y ver si guarda la imagen. Saludos.
  #3 (permalink)  
Antiguo 22/08/2012, 12:03
 
Fecha de Ingreso: agosto-2012
Ubicación: Aguascalientes
Mensajes: 3
Antigüedad: 11 años, 8 meses
Puntos: 1
Respuesta: No guarda en el campo Blob

Hola Isakmtz, gracias por contestar, le intente para que fuera un nuevo registro y me mando este error:

ORA-01460: unimplemented or unreasonable conversion requested
  #4 (permalink)  
Antiguo 22/08/2012, 12:49
 
Fecha de Ingreso: agosto-2012
Ubicación: Aguascalientes
Mensajes: 3
Antigüedad: 11 años, 8 meses
Puntos: 1
Respuesta: No guarda en el campo Blob

Después de tanto buscar por fin encontré la solución, se las dejo por si alguien le sirve:

try {
conection.setAutoCommit(false);
pstmt=conection.prepareStatement(query);
File file1 = new File(Ruta);//prueba
InputStream in = new FileInputStream(file1);
byte[] zipped = new byte[(int) file1.length()];
in.read(zipped);
BLOB blob = BLOB.createTemporary(conection, true, BLOB.DURATION_SESSION);
OutputStream blob_os = blob.getBinaryOutputStream();
blob_os.write(zipped);
blob_os.flush();
pstmt.setBlob(1,blob);
pstmt.executeUpdate();
in.close();
pstmt.close();
pstmt=null;
conection.commit();
} catch(SQLException ex) {
conection.rollback();
} finally {
if (pstmt != null)
pstmt.close();
}
return;
};

Gracias Isakmtz por tu tiempo.

Etiquetas: blob, netbeans, oracle
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:16.