Ver Mensaje Individual
  #4 (permalink)  
Antiguo 30/12/2009, 14:06
omarArista
 
Fecha de Ingreso: diciembre-2009
Mensajes: 1
Antigüedad: 14 años, 4 meses
Puntos: 0
Respuesta: BLOB y jsp....

Que tal! la respuesta es tarde, pero tuve el mismo problema apenas, y SI, la respuesta que diste es por el problema de los drivers, pero en lugar de cambiar todo, te muestro como se solucionó por aqui :D.

Vamos a dar por hecho que la variable "arch" contiene los bytes que vamos a meter a la base de datos. Y otra cosa, este ejemplo busca el archivo con el nombre, pero se puede cambiar para que busque el verdadero archivo por medio de un identificador.



java.sql.Connection cnn;
bytes arch[];
.
.
.

//Primero se inserta el blob vacio. esto es :
String sql= " INSERT INTO <MITABLA> (nombreArchivo, archivo) values (?,EMPTY_BLOB())";

PreparedStatement prstmt = cnn.prepareStatement(sql);
prstmt.setString(1,"ARHIVO1.jpg");
prstmt.executeUpdate();
if (prstmt!=null)
{ prstmt.close();
}

//Se hace un insert for update para que se tome el registro y se bloque
String sql2= "SELECT archivo FROM <MITABLA> WHERE nombreArchivo=? FOR UPDATE";

prstmt = cnn.prepareStatement(sql2);
prstmt.setString(1,"ARHIVO1.jpg");
RestultSet rs = prstmt.executeQuery();
rs.next();
oracle.sql.BLOB dbBlob = (oracle.sql.BLOB)rs.getBlob(1);
if (prstmt!=null)
{ prstmt.close();
}

//Se actualiza el blob para que se ingrese el archivo
String sql3 = "UPDATE <MITABLA> SET ARCHIVO = ? WHERE nombreArchivo =?";
prstmt = cnn.prepareStatement(sql3);
dbBlob.putBytes(1,arch);
prstmt.setBlob(1,dbBlob);
prstmt.setString(2,"ARHIVO1.jpg");
prstmt.execute();



Esto esta implementado en oracle 9i, espero que les funcione
Saludos.