Boa noite.
Estou apenas fazendo testes, com objetivo em adicionar uma imagem ao banco de dados Mysql utilizando um campo blob. A inserção foi blz. Porém queria visualizar a imagem em uma tela Jframe. Fiz um teste de listar a imagem para ver como fica o valor através do System.out.printnln(). Voltou Isto: [b][B@1787038[/b]. Isso já era esperado. Mas agora queria visualizar a imagem pelo Jframe (Criando o Jframe no Netbeans Claro!) Estou iniciando agora esse esquema de imagem em bd.
A seguir e mostrado o codigo que insere a imagem na tabela mypicture:
import com.mysql.jdbc.Connection;
import com.mysql.jdbc.Connection;
import com.mysql.jdbc.PreparedStatement;
import java.io.File;
import java.io.FileInputStream;
import java.sql.DriverManager;
import java.sql.ResultSet;
public class InsereImagem {
public static void main(String[] args){
Connection con = null;
ResultSet rs = null;
PreparedStatement stmt = null;
FileInputStream fis;
try
{
Class.forName("com.mysql.jdbc.Driver").newInstance();
con = (Connection) DriverManager.getConnection(
"jdbc:mysql://localhost/imagem", "root", ""
);
File image = new File("D:/foto_thiago.jpg");
stmt = (PreparedStatement) con.prepareStatement(
"insert into mypictures (name, photo) values (?, ?)");
stmt.setString(1, "FOTO_THIAGO");
fis = new FileInputStream(image);
stmt.setBinaryStream(2, fis, image.length());
int s = stmt.executeUpdate();
if (s > 0)
System.out.println("Inserido!");
else
System.out.println("Problemas!");
}
catch(Exception e)
{
System.out.println("Found some error : "+e.getMessage());
}
}
}
Lá vai o código que "“mostra a imagem”:
import com.mysql.jdbc.Blob;
import com.mysql.jdbc.Connection;
import com.mysql.jdbc.PreparedStatement;
import java.sql.DriverManager;
import java.sql.ResultSet;
public class ListaImagem {
public static void main(String[] args){
Blob image = null;
byte[] imgByte = null ;
Connection con = null;
PreparedStatement stmt = null;
ResultSet rs = null;
try
{
Class.forName("com.mysql.jdbc.Driver").newInstance();
con = (Connection) DriverManager.getConnection(
"jdbc:mysql://localhost/imagem", "root", ""
);
stmt = (PreparedStatement) con.prepareStatement(
"select photo from mypictures where id=5");
rs = stmt.executeQuery();
if(rs.next())
{
image = (Blob) rs.getBlob("photo");
imgByte = image.getBytes(1,(int)image.length());
System.out.println(imgByte);
}
else
{
System.out.println("Problemas ao listar imagem!");
}
}
catch(Exception e)
{
}
}
}
E a listagem da imagem é isso na console do netbeans!
run:
[B@fa9cf
CONSTRUÍDO COM SUCESSO (tempo total: 1 segundo)
Se possivel através deste exemplo, queria a ajuda dos amigos para visualizar tal esquema de imagem em um formulario JFrame!
Só pra reforçar, eu to seguindo tal Link, porém com intenção de utilizar a API de Swing (Apenas pegando a ideia).
http://www.roseindia.net/tutorial/java/jsp/jspdisplayblob.html
Grato desde já!!! :lol:
