0
我有一个将PDF文件存储到CLOB列的DB。我想写一个Java程序来检索它。只使用Clob java类来检索是行不通的。我想我需要将CLOB数据类型转换为BLOB,然后写入文件。任何人都可以告诉我如何使用Java程序将CLOB转换为BLOB。将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代码CLOB
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();
只需使用resultSet.getString(“CLOB_COLUMN”)将会提取Clob的值。 – 2012-02-12 02:19:32
不,这似乎没有工作。我能够读取和写入PDF文件。但是,当我打开Adobe Reader说文件已损坏。我尝试阅读和打开多个文件,同样的问题。我甚至尝试阅读和打开excel文件,但同样的问题。 – 2012-02-12 02:27:53
Excel是一种二进制格式。你不会使用clob来存储excel文件。如果您使用了错误的数据类型,则通过专注于读取数据来解决问题。我认为在选择将PDF存储在clob之前,您已经确定PDF是基于字符的文件格式。如果不是这样的话,你不能简单地把clob看成一个blob,然后让它解决问题。 – 2012-02-12 02:56:40