Criei um formulário de cadastro de produtos, com um jfilechooser, consigo buscar a imagem no meu pc e talz, mas o problema eh, como faço para enviar essa imagem para o banco de dados, e como recupero ela quando fizer uma pesquisa??
Já ouvi falar que há a possibilidade de salvar o caminho da imagem, só que não entendi direito…se alguém pudesse me mostrar um passo a passo ficaria agradecido…
Amigao… mude de direção enqto ta aprendendo pq ai ja evita de 1 dia vc fazer a porcaria de botar imagem no banco de dados.
Faz assim: no registro referente à imagem, por ex: na coluna (DS_PATH_IMAGEM) vc coloca o “caminho”, path algo assim de ONDE está a imagem (num diretorio de arquivos)
Dai qdo for demandado (Ex: o cara clica em BAIXAR imagem) vc faz um I/O simples e escreve os bytes no response.
Imagens em banco geram problemas de performance na maioria das aplicacoes que o utilizam.
Kiko1
Amigoo
poderia me dar um exemplo de como faço isso?
Obrigado desde já pela ajuda
fabim
Vamos comecar pelo mais simples blz?
Crie 1 registro no banco de dados, com 1 coluna na qual vc vai guardar o CAMINHO de onde ela se encontra fisicamente no diretorio.
Vc vai LER essa imagem do diretorio assim:
Feito isso, vc vai pra parte de GRAVAR essa imagem (inserir registro no banco + guardar binario em disco)
Mas ai ja vou deixar vc pesquisar pq… o conteudo sobre isso é extenso. E vc precisa desenvolver a habilidade de pesquisar de maneira efetiva o que nao sabe.
Kiko1
Mas não teria como eu salvar o caminhoo no banco, e só usar o nome da imagem depois na aplicação, dai na hora de chamar unir as duas coisas?
Kiko1
jLabel32.setText(caminho+(RS.getString("foto")));
Seria mais ou menos assim, no lugar do caminho colokei o caminho aonde tah a imagem, e no foto peguei do banco o nome da foto, só q ainda não funcionou
=S
fwsales
Esse exemplo salva e mostra a imagem salvando apenas a URL! Método que insere no banco:
publicvoidinserir(Pessoapes){Stringsql="INSERT INTO pessoa (nome, telefone, sexo, estado_civil, url_foto) VALUES (?,?,?,?,?)";try{stmt=conn.prepareStatement(sql);stmt.setString(1,pes.getNome());stmt.setString(2,pes.getTelefone());stmt.setInt(3,pes.isSexo()?0:1);stmt.setInt(4,pes.getEstado_civil());stmt.setString(5,pes.getUrl_foto());stmt.execute();stmt.close();}catch(SQLExceptionerro){thrownewRuntimeException(erro);}}
Método que mostra do banco:
publicArrayList<Pessoa>mostrarNome(Stringnome){Stringsql="SELECT * FROM pessoa WHERE nome LIKE '%"+nome+"%' ";try{st=conn.createStatement();rs=st.executeQuery(sql);while(rs.next()){Pessoaps=newPessoa();ps.setId(rs.getInt("id"));ps.setNome(rs.getString("nome"));ps.setTelefone(rs.getString("telefone"));ps.setSexo(rs.getInt("sexo")==0?true:false);ps.setEstado_civil(rs.getInt("estado_civil"));ps.setUrl_foto(rs.getString("url_foto"));lista.add(ps);}}catch(SQLExceptionerro){thrownewRuntimeException(erro);}returnlista;}
Método “Mouse Clicked”, ocorre quando eu clico em uma linha da JTable (situado na JFrame):
privatevoidtbDadosMouseClicked(java.awt.event.MouseEventevt){//...//Abaixo mostra o que neste caso é o importante, como mostrar a foto na JLabeltfUrlFoto.setText(tbDados.getValueAt(tbDados.getSelectedRow(),PessoaTableModel.COL_URL).toString());lbFoto.setIcon(newImageIcon(tbDados.getValueAt(tbDados.getSelectedRow(),PessoaTableModel.COL_URL).toString()));}