En ocaciones nos vemos en la necesidad de guardar una imagen, un pdf, etc. en la base datos y 
así mismo extraerlo, por lo tanto en esta entrada les mostraré de una forma genérica como
hacerlo, el código fuente fue probado en Oracle y Mysql, trataré de probarlo en postgresql.
Las versiones de los drivers en las distintas base datos son:
- Oracle: ojdbc14.jar.
- Mysql : mysql-connector-java-5.1.18-bin.jar
Cuando escribo "genérica" me refiero a no usar una clase especifica del driver correspondiente 
a la base datos.
Para mostrar como hacerlo he creado un grupo de clases que son:
- Conexion: Esta clase se encarga de la parte de la conexión.
- Archivos: Esta clase contiene dos métodos escribir y obtenerArchivo, que son los encargados
de escribir el archivo en la tabla y de obtener el archivo de la tabla en el orden correspondiente.
- ObtenerPropiedades: Esta clase fue creada para leer el archivo de propiedades. 
Las propiedades 
contienen los datos tanto como la clase de conexión del driver y los datos necesarios de 
acceso como URL, usuario, contraseña.
- PropertyException:Esta clase fue creada para manejar las excepciones si no se encuentra 
alguna propiedad requerida. 
- Datosblob: Esta clase fue creada como clase principal o de ejecución. En donde para guardar 
un archivo nos mostrará un ventana de selección de archivo.
public int escribir(String nombre, String rutaArchivo) {
        InputStream entrada = null;
        PreparedStatement pst = null;
        int ingresados = 0;
        try {
            File archivo;
            String insert;
            establecerConexion();
            getCon().setAutoCommit(false);
            insert = "Insert into ARCHIVOS values(?,?)";
            pst = getCon().prepareStatement(insert);
            archivo = new File(rutaArchivo);
            entrada = new FileInputStream(archivo);
            pst.setString(1, nombre.toUpperCase());
            pst.setBinaryStream(2, entrada, (int) archivo.length());
            ingresados = pst.executeUpdate();
            getCon().commit();
        } catch (FileNotFoundException ex) {
            Logger.getLogger(Archivos.class.getName()).log(Level.SEVERE, null, ex);
        } catch (IOException ex) {
            Logger.getLogger(Archivos.class.getName()).log(Level.SEVERE, null, ex);
        } catch (SQLException ex) {
            Logger.getLogger(Archivos.class.getName()).log(Level.SEVERE, null, ex);
        } finally {
            try {
                if (entrada != null) {
                    entrada.close();
                }
            } catch (IOException ex) {
                Logger.getLogger(Archivos.class.getName()).log(Level.SEVERE, null, ex);
            }
            try {
                if (pst != null) {
                    pst.close();
                }
            } catch (SQLException ex) {
                Logger.getLogger(Archivos.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
        return ingresados;
    }
public boolean obtenerArchivo(String nombreArchivoBuscar, String nombreArchivoSalida) {
        InputStream salida = null;
        try {
            PreparedStatement pst;
            ResultSet rs;
            Blob blob;
            FileOutputStream archivoSalida;
            String select;
            byte[] arreglo;
            int byteLeidos = 0;
            establecerConexion();
            getCon().setAutoCommit(false);
            select = "select ARCHIVO from ARCHIVOS WHERE NOMBRE=?";
            pst = getCon().prepareStatement(select);
            pst.setString(1, nombreArchivoBuscar);
            rs = pst.executeQuery();
            if (rs != null) {
                rs.next();
                blob = rs.getBlob(1);
                salida = blob.getBinaryStream();
                arreglo = new byte[2048];
                archivoSalida = new FileOutputStream(nombreArchivoSalida);
                while ((byteLeidos = salida.read(arreglo)) > -1) {
                    archivoSalida.write(arreglo, 0, byteLeidos);
                }
                return true;
            } else {
                return false;
            }
        } catch (IOException ex) {
            Logger.getLogger(Datosblob.class.getName()).log(Level.SEVERE, null, ex);
            return false;
        } catch (SQLException ex) {
            Logger.getLogger(Datosblob.class.getName()).log(Level.SEVERE, null, ex);
            return false;
        } finally {
            try {
                if (salida != null) {
                    salida.close();
                }
            } catch (IOException ex) {
                Logger.getLogger(Datosblob.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
    }
El que no ama,no ha conocido a Dios;
porque Dios es amor
1ra Juan 4:8
Descargar Fuentes



