Ver Mensaje Individual
  #2 (permalink)  
Antiguo 07/11/2008, 16:32
jesuscoro
 
Fecha de Ingreso: noviembre-2008
Mensajes: 115
Antigüedad: 15 años, 6 meses
Puntos: 4
Respuesta: Problema actualizando campos blob

Pues ya lo solucione. Ahora mismo no se de donde saque la solucion, por que estuve cogiendo de una busqueda y otra. Por si acaso a alguien le puede servir dejo aqui el codigo de como lo hice, tanto para guardarla en la base de datos como para recuperarla despues a un fichero.

Para guardar:
public void setBlob(){
InputStream inputImage = null;
try {
OperacionesConexiones oc = new OperacionesConexiones(driver, cadenaConexion);
Connection con = oc.crearConexion(user, pass);
Statement sentencia = con.createStatement(ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_UPDATABLE);
String sql = "SELECT * FROM libro";
ResultSet rs = sentencia.executeQuery(sql);
PreparedStatement pstmt = con.prepareStatement("UPDATE libro SET fotoLibro =? WHERE idLibro = ?",
ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_UPDATABLE);
while(rs.next()){
File file = new File(rs.getString("rutaFotoLibro"));
inputImage = new FileInputStream(file);
pstmt.setBinaryStream(1, inputImage, file.length());
pstmt.setInt(2, rs.getInt("idLibro"));
pstmt.executeUpdate();
}


} catch (FileNotFoundException ex) {
Logger.getLogger(OperacionesPersonalizadas.class.g etName()).log(Level.SEVERE, null, ex);
} catch (SQLException ex) {
Logger.getLogger(OperacionesPersonalizadas.class.g etName()).log(Level.SEVERE, null, ex);
} finally {
try {
inputImage.close();
} catch (IOException ex) {
Logger.getLogger(OperacionesPersonalizadas.class.g etName()).log(Level.SEVERE, null, ex);
}
}
}

Para recuperarla

public void getBlob(){
{

FileOutputStream fichero = null;
try {
OperacionesConexiones oc = new OperacionesConexiones(driver, cadenaConexion);
Connection con = oc.crearConexion(user, pass);
Statement sentencia = con.createStatement();
String sql = "SELECT * FROM libro where idLibro=20";
ResultSet resultados = sentencia.executeQuery(sql);
while (resultados.next()) {
Blob bob = resultados.getBlob("fotoLibro");
byte[] buffer = bob.getBytes(1, (int) bob.length());
File archivoSalida = new File("imagen.jpg");
fichero = new FileOutputStream(archivoSalida);

fichero.write(buffer); //Escribimos el buffer
fichero.close();
}
} catch (IOException ex) {
Logger.getLogger(OperacionesPersonalizadas.class.g etName()).log(Level.SEVERE, null, ex);
} catch (SQLException ex) {
Logger.getLogger(OperacionesPersonalizadas.class.g etName()).log(Level.SEVERE, null, ex);
}

finally {
try {
fichero.close();
} catch (IOException ex) {
Logger.getLogger(OperacionesPersonalizadas.class.g etName()).log(Level.SEVERE, null, ex);
}
}
}

}