Bom dia pessoal,
Depois de muito procurar no Google, e aqui mesmo no Guj, cheguei a uma solução que não resolveu meu problema por completo, por isso resolvi abrir este post.
Estou migrando um sistema onde o banco de dados é o MS Access. Preciso ler as fotos que foram salvas nesta base Access como Objeto OLE, e salvar isso no MySQL via JDBC. Nas várias pesquisas que fiz, a alternativa que me pareceu mais coerente foi a que segue abaixo.
private byte[] getFoto(InputStream in) {
if(in == null)
return null;
ByteArrayOutputStream baos = new ByteArrayOutputStream();
byte buffer[] = new byte[1024];
try {
for (int readNum; (readNum = in.read(buffer)) != -1;) {
baos.write(buffer, 0, readNum);
}
} catch (IOException e) {
e.printStackTrace();
}
return baos.toByteArray();
}
// O número 33 do parametro é a posição da coluna na tabela do Access
byte[] foto = getFoto(rs.getBinaryStream(33));
//...
//codigo para salvar no banco MySQL
Este código compila e executa sem erros, também salva no MySQL sem problemas. O motivo pelo qual estou aqui, é que depois, ao ler essa foto no MySQL, ou mesmo baixando ela pelo MySQL Query Browser, o arquivo baixado, não é reconhecido como imagem.
Achei um post que sugeriu ler (usar [b]rs.getBlob(33)[/b]) como Blob, mas não funcionou, e só depois descobri q não tem blob no Access.
Alguém aí já teve que ler imagens de bancos Access? Tem que fazer algum tratamento específico?
Qualquer informação que me ajude será muito útil.
Muito obrigado,
Rodrigo.