Armazenar imagem no MySQL

2 respostas
adriano_kahn

Olá pessoal, possuo o seguinte código:

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");
        }



        //Inserindo Dados
        String nome = this.jTextField_Nome.getText();
        String telefone = this.jTextField_Telefone.getText();
        String rg = this.jTextField_RG.getText();
        String cpf = this.jTextField_CPF.getText();
        JLabel foto = (JLabel) this.jLabel_Foto.getIcon();


        String comando = "insert into Cliente (nome, telefone, rg, cpf) " +
        "values " + "('"+nome+"','" +telefone+"','"+ rg+"','" +cpf+"','"+imagem+"')";

        try
        {
            java.sql.Statement stmt = con.createStatement();
            stmt.executeUpdate(comando);
            stmt.close();
            con.close();
        }
        catch(java.sql.SQLException e)
        {
            throw new java.lang.RuntimeException(e.getMessage());
        }



        //Fechando a Conexão:
        try
        {
            con.close();
        }
        catch (Exception e)
        {
            e.printStackTrace();
            throw new java.lang.RuntimeException("erro fechar");
        }

        JOptionPane.showMessageDialog(null, "Registro Gravado com sucesso!");

        
    }

Só que agora necessito de que meu Banco possa armazenar fotos direto no MySQL. Não pode ser apenas apontar para o caminho das fotos e sim guardá-las dentro do Banco.
Já criei o Campo Imagem no Banco do tipo BLOB. Más como sou iniciante, ainda não usei o JFileChooser para eu poder selecionar o arquivo que necessito que abra dentro de um JLabel (pelo que eu vi é esse componente que mostra a imagem né?)

Alguém poderia me ajudar?

Abs a todos e bons estudos

2 Respostas

G

O JDBC preve que você use Streams ou até mesmo as classes java.sql.Clob e java.sql.Blob. Dê uma lida nos javadocs do JSE que tem uma boa explicação de como usa-los. http://java.sun.com/j2se/1.5.0/docs/api/

Abraços

ViniGodoy

Use o PreparedStament. Ele não só vai viabilizar a gravação e recuperação de imagens do banco, como vai evitar esse monte de concatenação de Strings, e ainda vai te poupar do trabalho de conhecer o formato de datas do banco, ou de ter que colocar aspas simples nos campos string (e de ter que tratar o caso do seu usuário ter digitado essas aspas).

Enfim, acho que vc vai gostar de ler esse tutorial:

Criado 25 de julho de 2010
Ultima resposta 26 de jul. de 2010
Respostas 2
Participantes 3