¿Adjuntar archivos a una base de datos desde Java?

Estoy haciendo una aplicación en Java usando NetBeans. La aplicación se conecta con una base de datos en Access, en donde una tabla tiene un campo Olé. ¿Me gustaría saber cómo hacer en Java para adjuntar un archivo de cualquier tipo en la base de datos y poder leerlo posteriormente?

1 respuesta

Respuesta
3
Intenta esto amigo :)
public void guardaArchivo(String ruta) throws SQLException, FileNotFoundException
{
String sql = "INSERT INTO tabla(archivo) VALUES (?)";
//Creamos una cadena para después prepararla
PreparedStatement stmt = conexion.prepareStatement(sql);
File archivo = new File(ruta);
//ruta puede ser: "c://archivo"
FileInputStream fis = new FileInputStream(archivo);
//Lo convertimos en un Stream
stmt.setBinaryStream(1, fis, (int) archivo.length());
//Asignamos el Stream al Statement
stmt.execute();
}
Saludos no olvides cerrar tu pregunta va :)
Muchas gracias por tu respuesta, funciona muy bien!
Pero ahora tengo la duda de cómo hacer para volver a abrir el archivo. Por ejemplo, según entiendo si quiero adjuntar un archivo .docx las instrucciones lo que hacen es obtener la ruta del archivo y convertirlo en código binario.
¿Cómo se haríapara volver a convertir el código binario para leer o abrir el archivo en cuestión?
public void guardaImagenEnDisco(InputStream imagenBuffer) {
try
// (esto es practicamente una copia de ficheros clasica)
{
File fichero = new File("c:\\melones.jpg");
BufferedInputStream in = new BufferedInputStream(imagenBuffer);
BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(fichero));
byte[] bytes = new byte[8096];
int len = 0; depura("Copiamos el fichero");
while ( (len = in.read( bytes ))> 0 )
{
out.write( bytes, 0, len );
}
out.flush();
out.close();
in.close();
depura("Teminación del proceso con éxito");
}
catch(Exception e) { depura("Error al escribir en disco " + e.getMessage()); } }
----------------------------------------------------------------------------------------------------------------
y lo usarias asi :
Statement stmt = con.createStatement();
ResultSet results = stmt.executeQuery("select archivo from tabla");
results.next();
Blob campo = results.getBlob("archivo");
InputStream x =campo.getBinaryStream();
GuardaImagenEnDisco(x)
-----------------------------------------------------------------------------------------------------------
Y listo men espero te sirva
No olvides cerrar tu pregunta va ;)

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas