Blobs

2 respostas
R

Como eu faco para gravar e recuperar dados em um campo blob , tenho uma pagina jsp onde tera um textarea onde sera colocado um longo texto, estou usando struts , tenho os daos e beans prontos , so que queria algum exemplo de como implementar dentro deste contexto uma classe que eu passasse o texto e esta se encarregasse de gravar e ler o texto novamente …

2 Respostas

aoqfonseca

Qual seria o banco de dados onde iria gravar este dados?

Para qualquer banco, na api JDBC vc poder fazer da seguinte forma:

1- Crie um preparedStatemet

PreparedStatement st = conn.prepareStatement("insert into tb_blob (blob) values (?)");

2 - Depois é só fazer um set Blob com o conteudo lido

st.setBlob(<conteudo do arquivo>); // veja a documentacao para ver este metodo direito

Execute o statement e de commit depois

Caso seja num banco de dados oracle e esteja usando como drive o jar classes12.zip, vc terá que fazer um pouco diferente. Vc não vai conseguir inserir direto, por isso terá que fazer um select for update tb.

Sendo assim vc terá os seguinte passos:

1- Primeiro faça um insert , colocando no campo um empty_blob

INSERT INTO Tb_blob(blobo) VALUES ( EMPTY_CLOB())

2- Depois vc realizar um select for update neste tabela

conn.preparedStatement("select blob from tb_blob for update");

3- Com o statement vc acessa ao BLOB, atualiza seu conteúdo

Blob retorno 
if (rst.next()) {
            retorno = rst.getBlob("TX_CONTEUDO_MENSAGEM");
}
retorno .write(mensagemXML.getBytes());
retorno .flush();
retorno .close();
retorno

4- Com o objeto blob vc realizar um update na tabela no campo

st  = conn.prepareStatement("update tb_blob set blob = ? ");
st.setBlob(retorno);
st.executeUpdate();
st.close();
...

Acho que isso resolver o seu problema

Abraços

R

Estou usando FireBird, gostaria que os metodos que interpretassem os blobs estivessem dentro de minha classe pessoa por exemplo ai eu so ia fazer pessoa.setObs(Blob) ou pessoa.getObs(Blob) ou pessoa.setFoto(Imagem) ou pessoa.getFoto(Imagem), mas nao estou conseguindo fazer …

Criado 20 de junho de 2006
Ultima resposta 21 de jun. de 2006
Respostas 2
Participantes 2