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.
Stringsql="INSERT INTO USU_IMG(IMG, USU_DESOBS) values (?,?)";PreparedStatementquery=conn.prepareStatement(sql);query.setBinaryStream(1,(InputStream)fileIn,(int)file.length());query.setString(2,"PDF de Teste!");query.executeUpdate();
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
D
daniel4613
vê se é isso
antes estava assim
Filefile=newFile("C:/arquivo.pdf");FileInputStreamfileIn=newFileInputStream(file);Stringsql="INSERT INTO USU_IMG(IMG, USU_DESOBS) values (?,?)";PreparedStatementquery=conn.prepareStatement(sql);query.setBinaryStream(1,(InputStream)fileIn,(int)file.length());query.setString(2,"PDF de Teste!");query.executeUpdate();
Então eu mudei para
Pathpath=Paths.get("C:/arquivo2.pdf");byte[]data=Files.readAllBytes(path);Stringsql="INSERT INTO USU_IMG(IMG, USU_DESOBS) values (?,?)";PreparedStatementquery=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.
K
kcobainnn
que tal converter seu PDF p/ um Base64 e gravar como uma String?
D
daniel4613
Mas eu preciso gravar como PDF mesmo no banco.
A
Aleksandro
No oracle vc deve ter uma coluna do tipo BLOB na tabela que vc esta gravando.
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
A
Aleksandro
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
D
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
A
Aleksandro
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
Atualize o driver , pegue no site da oracle a última versão , deve resolver este problema …