@SuppressWarnings(“serial”)
public class ImagemBanco extends JFrame{
public static Connection connection = null;
public static Statement statement = null;
public static ResultSet resultSet = null;
public static PreparedStatement pstmt = null;
public static void main(String[] args) {
// TODO Auto-generated method stub
new ImagemBanco().setVisible(true);
}
public ImagemBanco(){
try{
String banco="";
/**
* Conectando ao BD
*/
banco=("jdbc:mysql://localhost/BANCO_TESTE?user=root&password=123");
Class.forName("com.mysql.jdbc.Driver");
connection= DriverManager.getConnection( banco );
JFileChooser fileChooser = new JFileChooser();
fileChooser.setDialogTitle("Importar imagem");
fileChooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
String caminhoImagem = null;
int a = fileChooser.showOpenDialog(null);
/**
* Se a for igual a zero e porque o usuario clicou em salvar, se for 1 e porque clicou em cancelar
*/
if (a==0)
{
caminhoImagem = fileChooser.getSelectedFile().getAbsolutePath();// Aqui estou pegando o nome do arquivo e o endereco dele
File input = new File(caminhoImagem);//Seleciona o arquivo do disco
//Aqui eu redimensiono a imagem a partir do file, 128x128 px
BufferedImage imageInput = ImageIO.read(input);
BufferedImage scaled = new BufferedImage(128, 128, BufferedImage.TYPE_INT_ARGB);
Graphics2D g2d = scaled.createGraphics();
g2d.drawImage(imageInput, 0, 0, 128, 128, null);
g2d.dispose();
//Crie um ByteArrayOutputStream
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
//Jogue a imagem lá dentro do byteArrayOutputStream
ImageIO.write(scaled, "png", byteArrayOutputStream);
//Prepara a sql e logo em seguida inser os bytes no campo parametrizado
pstmt = connection.prepareStatement("INSERT INTO imagens values (0,?)");// o ? significa que ainda completareios parametros que faltam
pstmt.setBytes(1, byteArrayOutputStream.toByteArray()); //Complemento agora, passando a posicao do parametro e o valor
pstmt.executeUpdate();// Insiro no BD
//Fazendo processo contrario e pegaremos a imagem do banco para exibir, primeiro vamos pegar qual foi ID gerada pela chave
//primaria auto incremento.
statement= connection.createStatement();
resultSet= statement.executeQuery("SELECT DISTINCT LAST_INSERT_ID() FROM imagens");
resultSet.next();
int id = resultSet.getInt(1);// Esse é a chave primaria do registro
//Carregando o resultSet com a nossa busca
resultSet = pstmt.executeQuery("SELECT * FROM imagens WHERE id="+id);
resultSet.next();
//Pegando a imagem (a partiri dos bytes que veio do banco) do registro pesquisado
Image img = Toolkit.getDefaultToolkit().createImage(resultSet.getBytes(2));
//Fechando a conexao
connection.close();
//Montando o imageIcon a partir do image
ImageIcon imageIcon = new ImageIcon(img);
//Criando o grafico para mostrar o resultado
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
setSize(160,172);
this.setLayout(null);
JLabel label = new JLabel();
label.setIcon(imageIcon);
label.setBounds(10,10,128,128);
setLocationRelativeTo(null);
this.add(label);
}
else{
System.exit(0);
}
}
catch(Exception ex){
ex.printStackTrace();
JOptionPane.showMessageDialog(null, "ERRO");
}
}
} [/code]
So que eu gostaria de usar um JFrame com um Jbutton para que o JfileChooser abaixo apareça qdo pressionar o Jbutton (que estra localizado no Jframe criado anteriormente com o settitle(“Carregar”)) e quando selecionar a imagem no JFileChooser, ela apareca no JLabel que estara localizado no JFrame criado, só que essa parte do banco de dados que esta no codigo nao me interessa nessa parte do programa e sim posteriormente qdo tds os dados estiverem preenchidos e eu nao consigo abrir a imagem sem q de erro em algo relacionado ao banco de dados implementado no codigo… ou seja… quero tirar a parte de banco de dados do codigo e fazer as implementações visuais sitadas acima… Espero q possam me ajudar…
Viny… sou iniciante, entao tenho bastante dificuldade ainda, ate por isso qdo peço ajuda, peço q se possivel comente bem os códigos para que eu possa entender melhor. Entao no atual estágio de aprendizado em q estou, necessito de toda a ajuda possivel…
É o seguinte…
pedi uma ajuda, pois gostaria de armazenar uma imagem em um campo BLOB no meu Banco de dados, que é constituído de Nome, Telefone, RG, CPF e Foto. Só que no JFrame de Cadastro eu quero colocar 4 JText para receber Nome, Telefone, RG e CPF, além de um botão com o titulo “Carregar”, para que quando eu estivesse cadastrando o cliente eu pressionasse esse botão Carregar e aparecesse um JFileChooser, aonde eu selecionaria uma imagem, preferencialmente JPG, e dentro do JFrame de cadastro existe um JLabel para receber a imagem que fosse selecionada a partir da escolha feita dentro do JFileChooser, tudo isso sem usar o Banco de Dados… E após o cadastro feito, o JFrame possuirá um botão entitulado “Gravar”, aonde estaria a conexão com o banco, para que a gravação seja feita… É mais ou menos isso, mas eu quero ir passo a passo…
[quote=Jingo]É adriano kahn já reclamei aqui tb desse fato, ainda bem que não preciso mais da ajuda desse fórum!
Como é mesmo que excluo minha conta?[/quote]
Engraçado, olhando o seu histórico, deu pra ver que em boa parte dos seus tópicos você foi muito bem ajudado. Por que ao invés de entrar aqui só para reclamar, você não ajudou o colega?
Não existe a opção de excluir conta. Simplesmente pare de frequentar o fórum. Eu vou continuar ajudando gente por aqui, e pela freqüência e a atividade das pessoas do fórum, tenho certeza de que estamos fazendo um ótimo trabalho.
É bom lembrar que ninguém aqui tem a obrigação de responder a dúvidas, muito menos de dar códigos fontes completos, compilados e testados. O fórum é um local para trocar idéias e experiências. Quando percebo que o usuário é iniciante eu, pelo menos, tento estimula-lo a aprender e entender o que está fazendo, não simplesmente entregar uma solução.
Eu jamais pegaria o código pronto, só seu eu quisesse matar minha aplicação; nunca vi tanta gambiarra.
E vê se conserta esse fórum e coloca uma opção de exclusão, não entendo qual é a dificuldade de fazer algo tão simples, precisa de ajuda? Faz um tópico: “Como adicionar a função de exclusão de perfil?”.
[quote=Jingo]Eu jamais pegaria o código pronto, só seu eu quisesse matar minha aplicação; nunca vi tanta gambiarra.
E vê se conserta esse fórum e coloca uma opção de exclusão, não entendo qual é a dificuldade de fazer algo tão simples, precisa de ajuda? Faz um tópico: “Como adicionar a função de exclusão de perfil?”.[/quote]
Eu não programo o fórum. O GUJ usa o JForum.
Se você não gosta dessa característica, pode se tornar um implementador do projeto e atualiza-lo.
Não entendi ainda, fora o fato de não poder excluir a conta, qual é a sua reclamação? Está nervoso com o que?
run:
Exception in thread “AWT-EventQueue-0” java.lang.RuntimeException: Uncompilable source code - incompatible types
required: boolean
found: int
at bancoswing1.Principal.jButton_CarregarActionPerformed(Principal.java:122)
at bancoswing1.Principal.access$200(Principal.java:23)
at bancoswing1.Principal$3.actionPerformed(Principal.java:63)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
at java.awt.Component.processMouseEvent(Component.java:6263)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
at java.awt.Component.processEvent(Component.java:6028)
at java.awt.Container.processEvent(Container.java:2041)
at java.awt.Component.dispatchEventImpl(Component.java:4630)
at java.awt.Container.dispatchEventImpl(Container.java:2099)
at java.awt.Component.dispatchEvent(Component.java:4460)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4574)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
at java.awt.Container.dispatchEventImpl(Container.java:2085)
at java.awt.Window.dispatchEventImpl(Window.java:2478)
at java.awt.Component.dispatchEvent(Component.java:4460)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
CONSTRUÍDO COM SUCESSO (tempo total: 11 segundos)
Viny… Muito obrigado… Finalmente consegui com o seguinte código abaixo…
[code]private void jButton_CarregarActionPerformed(java.awt.event.ActionEvent evt) {
//Criação do FileChooser
JFileChooser fileChooser = new JFileChooser();
fileChooser.setDialogTitle(“Importar imagem”);
fileChooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
// int a = fileChooser.showOpenDialog(null);
if (fileChooser.showOpenDialog(this) == JFileChooser.APPROVE_OPTION)
{
//return;
jLabel1.setIcon(new ImageIcon(fileChooser.getSelectedFile().getPath()));
}
//Abre a caixa para escolher a imagem
} [/code]
Fiz algumas alterações em relação ao código que vc me enviou, mas seu código foi de grande valia…
Com essas alterações que fiz, esse código descrito acima possui alguma coisa que pode dar errado, ou algo a mais que eu tivesse que implementar?
agora o que esta matando é a conexao com o banco…
pois meu codigo no banco se encontra dessa maneira descrita abaixo:
[code]
private void jButton_GravarActionPerformed(java.awt.event.ActionEvent evt) {
//fazer a conexao com o mysql
java.sql.Connection con;
try
{
Class.forName(“org.gjt.mm.mysql.Driver”);
con = java.sql.DriverManager.getConnection(“jdbc:mysql://localhost:3306/db_aulas”, “root”,“123”);
}
catch (Exception e)
{
e.printStackTrace();
throw new java.lang.RuntimeException(“erro ao conectar”);
}
private void jButton_CarregarActionPerformed(java.awt.event.ActionEvent evt) {
//Criação do FileChooser
JFileChooser fileChooser = new JFileChooser();
fileChooser.setDialogTitle("Importar imagem");
fileChooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
//Abre a caixa para escolher a imagem
if (fileChooser.showOpenDialog(this) != JFileChooser.APPROVE_OPTION) {
return;
}
jLabel1.setIcon(new ImageIcon(fileChooser.getSelectedFile().getPath()));
}
Quanto ao do banco, tente adaptar o que você mesmo postou. Todos os passos para gravar imagem estão ali. Note que ele usar PreparedStatement, e não Statement, como eu já te recomendei em outros tópicos.
Fazer concatenação na String do SQL (isso é, usar aquele sinal de +) é altamente prejudicial. Não só a sintaxe fica mais confusa, como seu programa pode dar erro caso o usuário use aspas simples na string dele. Você também fica dependente da String do formato de data do banco e não pode trabalhar com campos BLOB (como o da imagem).