Buscar
Social
Ofertas laborales ES

Foro sobre Java SE > Guardar Iimagen en binario en sql server

Buenas amigos del grupo queria pedirles consejos sobre cual es la mejor forma de guardar imagenes en binario en sql server y luego recuperarlas en tu aplicacion, actualmente yo lo guarde con el tipo de dato binary ne sql server y estoy tratando de recuperarlo con el siguiente codigo ;: y me sale el error null pointer exceptio quiero saber a que se debe ...o la manera que lo estoy haciendo no es la mas optima

private void btnMostrarimagenActionPerformed(java.awt.event.ActionEvent evt) {

Connection c=con.obtenerconexion();

try {
CallableStatement cs = c.prepareCall("{call sp_mostrarimagen(?)}");
cs.setInt(1,6);

ResultSet rs=cs.executeQuery();
InputStream is;
while(rs.next()){
is=rs.getBinaryStream(1);
System.out.print("sss");

BufferedImage bi = ImageIO.read(is);
ImageIcon foto = new ImageIcon(bi);

Image img = foto.getImage();
Image newimg = img.getScaledInstance(140, 170, java.awt.Image.SCALE_SMOOTH);

ImageIcon newicon = new ImageIcon(newimg);

lblimagen.setIcon(newicon);


}
} catch (SQLException ex) {
JOptionPane.showMessageDialog(null, ex.getMessage());
} catch (IOException ex) {
JOptionPane.showMessageDialog(null, ex.getMessage());
}

noviembre 13, 2016 | Registered Commentercr1st14n

Hola, la mejor opción para en mi opinión, es, no guardarlas en la bbdd, ya que puede disminuir considerablemente el rendimiento de la aplicación, al tener que subir y descargar las imágenes a la bbdd, lo mejor en mi humilde opinión es guardar la url de la imagen y cargarla desde la url.

Ahora, si no te queda otra, lo mejor es usar el tipo de dato varbinary(n), ya que este tipo de datos no es fijo, como ocurre con el binary.

El binary, si creas un campo binary(8000), y guardas una imagen de 300 kb, vas a estar desperdiciando espacio, ya que la imagen en bbdd te ocupara 8000 ya que asi le dijiste tu...

En cambio, el varbinary(8000), si la imagen te ocupa 300 kb en disco, en la bbdd tambien se quedara en 300 kb, ya que es un binario de longitud variable, y no fija como ocurre con el binary.

Por otro lado, con el tema de la excepcion, pon aqui la traza, para que podamos ver porque esta ocurriendo, null pointer exception puede ser debida a muchos factores.

Bueno, un saludo

noviembre 19, 2016 | Registered Commenterloderain