Gravar PDF no Oracle

Oláa pessoal.

Estou com uma dúvida.

Tenho um uma tabela no Oracle e preciso gravar um arquivo PDF em uma tabela. Nessa tabela eu tenho um campo do tipo BLOB.

Quando eu vou gravar um arquivo PDF com um texto simples, executa tranquilo agora quando eu insiro uma imagem dentro do arquivo PDF aparece o seguinte erro.

ORA-01460: conversão não-implementada ou não-resolvível solicitada

Segue o código.

String sql = "INSERT INTO USU_IMG(IMG, USU_DESOBS) values (?,?)";
PreparedStatement query = conn.prepareStatement(sql);
query.setBinaryStream(1, (InputStream)fileIn, (int) file.length());
					
query.setString(2, "PDF de Teste!");
query.executeUpdate();

Se alguem puder me ajudar…

Para gravar o arquivo você deve passar um array de bytes para o banco.

Tente carregar o arquivo dentro de um objeto do tipo byte[] e depois passe como parametro na sua query.

Abs

vê se é isso

antes estava assim

File file = new File("C:/arquivo.pdf");  
 FileInputStream fileIn = new FileInputStream(file);  

String sql = "INSERT INTO USU_IMG(IMG, USU_DESOBS) values (?,?)";
PreparedStatement query = conn.prepareStatement(sql);
query.setBinaryStream(1, (InputStream)fileIn, (int) file.length());
query.setString(2, "PDF de Teste!");
query.executeUpdate();

Então eu mudei para

Path path = Paths.get("C:/arquivo2.pdf");
byte[] data = Files.readAllBytes(path);

String sql = "INSERT INTO USU_IMG(IMG, USU_DESOBS) values (?,?)";
PreparedStatement query = conn.prepareStatement(sql);
query.setBytes(1, data);					
query.setString(2, "PDF de Teste!");
query.executeUpdate();

Mas se comportou da mesma forma, eu consigo gravar o PDF com texto, mas o que possui imagem não.

que tal converter seu PDF p/ um Base64 e gravar como uma String? :wink:

Mas eu preciso gravar como PDF mesmo no banco.

No oracle vc deve ter uma coluna do tipo BLOB na tabela que vc esta gravando.

Aqui tem um exemplo: http://www.guj.com.br/java/211633-jimage-no-netbeans#1076887

Abs.

Eu tenho uma coluna do tipo BLOB… e já consigo gravar um PDF dela… o problema é que eu só consigo gravar PDF com texto… PDF com imagem é que é o problema

Acho que vc esteja gravando a imagem em binário …neste caso você deve fazer algo desta forma :

blob = rs.getBlob("seu pdf"); bin = blob.getBinaryStream(); bout = new FileOutputStream(byteFileDb); while ((bytesRead = bin.read(bbuf)) != -1) { bout.write(bbuf, 0, bytesRead); } bin.close(); bout.close();

Observe que estou usando getBlob e para setar use setBlob …acredito que desta forma dará certo … testa ai …abs

O estranho é que PDF pequeno vai… PDF um pouco maior já não grava.

aparece o erro que faleei

ORA-01460: conversão não-implementada ou não-resolvível solicitada

[quote=daniel4613]O estranho é que PDF pequeno vai… PDF um pouco maior já não grava.

aparece o erro que faleei

ORA-01460: conversão não-implementada ou não-resolvível solicitada [/quote]

Atualize o driver , pegue no site da oracle a última versão , deve resolver este problema …