Inserindo Arquivo em Banco de Dados - Via JDBC

2 respostas
T

Olá,

Preciso persistir arquivos em banco numa aplicação que estou fazendo, mesmo eu tendo criado um campo BLOB (mySQL) quando tento inserir, obtenho o seguinte erro:

com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data too long for column ‘content’ at row 1

Alguém sabe me dizer por que isto esta acontecendo?

Primeiramente eu transformo o arquivo num array de bytes, depois eu faço a persistência usando PreparedStatement setBytes(Bytes[] x). O erro pode estar ai?

Abraços,

2 Respostas

andre.santos

Olá.

Use o método setBinaryStream do PreparedStatement.

Segue um exemplo:

File arquivo = new File("CAMINHO_DO_ARQUIVO");

FileInputStream fis = new FileInputStream(arquivo);
			
//o campo ARQ é do tipo BLOB
PreparedStatement ps = conn.prepareStatement("INSERT INTO ARQUIVO (arq) VALUES (?)");

ps.setBinaryStream(1, fis, (int)arquivo.length());

ps.execute();

Espero que tenha ajudado!

[]'s

T

Andre obrigado pela sua resposta, mas eu acabei modificando o projeto alterando a forma de persistência de arquivo para apenas o caminho dos arquivos. Eu tinha algumas dúvidas com relação a qual seria a melhor forma e depois de ler alguns comentários a respeito cheguei a conclusão de que pelo menos neste caso a melhor forma seria inserir em FileSystem.

Bom, por este motivo eu não pude testar sua sugestão, porém em breve estarei empregando-a em outro projeto!

[]´s :wink:

Criado 18 de fevereiro de 2010
Ultima resposta 22 de fev. de 2010
Respostas 2
Participantes 2