Ler foto de banco Access com JDBC! [RESOLVIDO]

3 respostas
rdantas

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  depois descobri q não tem blob no Access.

  Alguém   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.

3 Respostas

Rodrigo_Sasaki

vê se te ajuda, cara…
http://www.roseindia.net/answers/viewqa/JSP-Servlet/17280-to-get-picture-from-ms-access-database-by-jsp-servlet…html

rdantas

digaoneves:
vê se te ajuda, cara…
http://www.roseindia.net/answers/viewqa/JSP-Servlet/17280-to-get-picture-from-ms-access-database-by-jsp-servlet…html

Valeu digaoneves pela boa vontade mas é basicamente isso que estou fazendo na implementação acima. No entanto, como a base que estou trabalhando é um legado do software antigo, acho q vou criar uma base “zerada” no Access e simular o teste do artigo que você me passou.

Muito Obrigado.

Rodrigo.

rdantas

Salve digaoneves, galera do GUJ!!!

Implementei o teste do artigo que foi sugerido, e ele faz praticamente a mesma coisa que eu  estava fazendo. Então resolvi implementar um teste simples onde eu gravo uma imagem minha em uma base Access, depois leio esta imagem, e a salvo em outra base do MySQL. Bom, funcionou perfeitamente, tanto com meu código, quanto com o código do artigo do digaoneves. Isso me leva a crer que o software legado que gerou a base pode estar de alguma forma protegendo estas fotos, seja por criptografia, ou outro recurso qualquer. 

Como contribuição à comunidade posso afirmar que o código sugerido pelo digaoneves funciona, se algum passar por este problema, espero tb eu ter ajudado.

Grande abraço,

Rodrigo.

Criado 18 de junho de 2012
Ultima resposta 18 de jun. de 2012
Respostas 3
Participantes 2