我有一个将PDF文件存储到CLOB列的数据库。我想编写一个java程序来检索它。只使用Clob java类进行检索不起作用。我想我需要将CLOB数据类型转换为BLOB然后写入文件。任何人都可以告诉我如何使用java程序将CLOB转换为BLOB。
这是我的数据库
DOC_ID NOT NULL VARCHAR2(60)
DOC_NAME NOT NULL VARCHAR2(500)
DOC_TYPE NOT NULL VARCHAR2(100)
DOC_CONTENT CLOB()
我发送DOC_ID
以获取Doc_CONTENT
。 DOC_CONTENT
将doc_name
这是我的java代码
PreparedStatement stmnt = conn.prepareStatement("select DOC_CONTENT, DOC_NAME from documentum_docs_queue where doc_id=" + documentid);
ResultSet rs = stmnt.executeQuery();
Clob aBlob = null;
String filename = "filename";
while (rs.next()) {
try {
aBlob = rs.getClob(1);
filename = rs.getString(2);
//System.out.println("filename-------------- " + filename);
} catch (Exception ex) {
ex.printStackTrace();
byte[] bytes = rs.getBytes(1);
}
}
rs.close();
stmnt.close();
File blobFile = new File("c:/temp/writer/"+filename);
//System.out.println("blobFile-------------- " + blobFile);
FileOutputStream outStream = new FileOutputStream(blobFile);
InputStream inStream = aBlob.getAsciiStream();
int length = -1;
int size = (int) aBlob.length();
byte[] buffer = new byte[size];
while ((length = inStream.read(buffer)) != -1) {
outStream.write(buffer, 0, length);
outStream.flush();
}
inStream.close();
outStream.close();
答案 0 :(得分:0)
从CLOB转换为BLOB无济于事。 CLOB是一种文本格式。这意味着,该数据库自动将存储的数据转换为数据库字符集。 PDF是二进制格式,因此存储到数据库中可能会损坏文件。
有必要将文件存储到BLOB列中。