Imagem no mysql

6 respostas
Leco2

Bom dia pessoal,

Estou com uma dúvida e espero q possam me ajudar.
Eu criei um programa que desenha na tela um eletrocardiograma de uma pessoa, pra desenhar eu utilizei o método paint, usando o drawline etc…
depois de gerar essa imagem eu gostaria se saber se tem como eu salva-la do banco de dados (no caso mysql), e depois lê-la atravez do banco.
vou anexar a imagem do eletro de que eu estou me referindo.

Agradeço desde já !!


6 Respostas

Guilherme_Gomes

Use um campo do tipo BLOB (tinyblob, blob, mediumblob, longblob, veja qual aqui) e gerencie esse campo através de um array de bytes.

Se não estiver usando nenhum framework de acesso ao banco, também tera que fazer a criação do BLOB.

Leco2

opa vlw Guilherme,

vou dar uma estudada nisso q vc me passou qlqr coisa posto aqui novamente :smiley:

finotti

outra opção é fazer o upload da imagem e gravar a referência a esse arquivo no banco de dados.
[]'s

Metaleiro

[color=darkblue]Sei que a linguagem é PHP, mas acredito que dá para ter uma base: [/color]

Tutorial: Gravação de imagens em banco de dados MySQL utilizando PHP

Leco2

gente eu optei pela solução que o guilherme propós...e tenho uma dúvida.
Criei um campo (blob) no mysql e lá eu inseri a imagem.

Criando a tabela:
public void criaTabelas(){
        try{
            String tablePaciente = "create table "+table+"(Cont int(10) unsigned not null auto_increment,Name varchar(50) not null,Lastname varchar(100) not null,Age int(3),Gender varchar(10),Weight double(5,3),Height double(5,3), ECG Blob, Note varchar(255),primary key(Cont));";
            stm.execute(tablePaciente);
        }catch(SQLException ex){
            Logger.getLogger(conectaBanco.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
o campo ECG é o campo Blob inserindo no banco:
public void insert(String nome, String sobrenome, String sexo, String idade, String peso, String altura, byte[] imagem, String note){
        try{
            DecimalFormatSymbols ponto = new DecimalFormatSymbols();

            peso = peso.replace(ponto.getDecimalSeparator(), '.');
            altura = altura.replace(ponto.getDecimalSeparator(), '.');
            int Idade = Integer.parseInt(idade);
            double Peso = Double.parseDouble(peso);
            double Altura = Double.parseDouble(altura);

            String query = "insert into "+table+" (name, lastname, gender, age, weight, height, ECG, note) values ('"+nome+"', '"+sobrenome+"', '"+sexo+"', "+Idade+", "+Peso+", "+Altura+", '"+imagem+"','"+note+"')";
            stm.execute(query);
        }catch(SQLException ex){
            Logger.getLogger(conectaBanco.class.getName()).log(Level.SEVERE, null, ex);
        }

    }

Bom aqui tá a função pra inserir no banco, eu passo por parametro todos os dados inclusive os dados da imagem. Que é em bytes.
minha dúvida é o seguinte... ele armazena certinho só que eu acho q ele armazena o endereço do byte.
Se chamo os dados da imagem para plotar na tela novalente ele me devolve o endereço tipo [B@161d....
Queria inserir assim(EXEMPLO):
byte[] b ={1,2}
e q o banco me retornasse o valor 1 e 2....
será q ficou muito confuso? :?

A

Guilherme Gomes:
Use um campo do tipo BLOB (tinyblob, blob, mediumblob, longblob, veja qual aqui) e gerencie esse campo através de um array de bytes.

Se não estiver usando nenhum framework de acesso ao banco, também tera que fazer a criação do BLOB.

Caso esteja utilizando JSON, como seria feita a recuperação de dados? O mesmo foi persistido via Blob…

Criado 16 de julho de 2009
Ultima resposta 20 de out. de 2010
Respostas 6
Participantes 5