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 …
Blobs
2 Respostas
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
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 …