Oracle中的lob (Large Object)可以存储非常大的数据(可能是4GB),这样就可以通过将文件或其它任何对象序列化成字节输出流(OutputStream)后写入数据库,之后使用字节输入流(InputStream)将数据读出然后反序列化为原始文件或对象。操作时需要使用oracle的JDBC包,它扩展了sun的JDBC包中的Blob对象。同时需要注意一些细节。下面的代码演示如何使用blob(实例中需要Oracle的JDBC包)。
import oracle.jdbc.OracleResultSet; // 使用Oracle的ResultSet对象
import oracle.sql.BLOB; // 使用Oracle的BLOB对象,而不是sun的Blob
...
try{
Connection conn=<数据库连接>;
File file=<存入数据库的文件对象>;
conn.setAutoCommit(false); // 取消Connection对象的auto commit属性
String file_name=file.getName();
// 数据库中有一个item表,其中的file_name (varchar2)存储文件名,file_blob (blob)存储文件对象
String sql="INSERT INTO item (file_name,file_blob) VALUES ('" + file_name + "',EMPTY_BLOB())"; // 使用“EMPTY_BLOB()“成生一个空blob
Statement stmt=conn.createStatement();
int count=stmt.executeUpdate(sql);
sql="SELECT file_blob FROM item WHERE iid='" + iid + "' FOR UPDATE"; // 使用“FOR UPDATE”得到表的写锁
ResultSet rs=stmt.executeQuery(sql);
rs.next();
BLOB blob=((OracleResultSet)rs).getBLOB("file_blob"); // 得到BLOB对象
OutputStream out=blob.getBinaryOutputStream(); // 建立输出流
InputStream in=new FileInputStream(file); // 建立输入流
int size=blob.getBufferSize();
byte[] buffer=new byte[size]; // 建立缓冲区
int len;
while((len=in.read(buffer)) != -1)
out.write(buffer,0,len);
in.close();
out.close();
conn.commit();
}
catch(Exception ex){
try{
conn.rollback();
}
catch(SQLException sqle){
System.err.println(sqle.getMessage());
}
}
如果要读出文件的话只需调用BLOB的getBinaryStream()生成一个输入流,再写入一个文件就行了。
分享到:
相关推荐
java中读取ORACLE中BLOB字段存储的图片
public void testInsertToDB(String path) { //get last file name by time String fileName = ""; try { fileName = InputStreamHelp.newInstance().getLastFilename(path); LogHelp.getLogger().debug(...
java对oracle数据库中blob字段的处理
视频第六部分共七部分 下载全才可以解压 博文链接:https://dlivan.iteye.com/blog/116258
分享在JAVA中Blob转换成String实例
视频第三部分共七部分 下载全才可以解压 博文链接:https://dlivan.iteye.com/blog/116256
java放blob到Oracle数据库 使用java把mp3等二进制文件放到Oracle数据库中
只需要安装oracle client在本地,然后配置好tns,输入连接名,用户名,密码,数据表的名称,文件名数据列名以及blob数据列名,就可以批量导出ORACLE数据库BLOB字段生成图片
视频第七部共七部 下载全才可以解压 博文链接:https://dlivan.iteye.com/blog/116262
jdbc 操作oracle blob数据jdbc 操作oracle blob数据jdbc 操作oracle blob数据jdbc 操作oracle blob数据jdbc 操作oracle blob数据jdbc 操作oracle blob数据jdbc 操作oracle blob数据jdbc 操作oracle blob数据jdbc ...
Oracle导出Clob,Blob等大字段工具,自己写的工具,方便大家下载使用
java实现 BLOB图片大文件在oracle中的存储和查找,采用MVC模型编写,很适合初学着对JDBC的学习,对熟悉java与oracle的连接很有帮助.
Java存取OracleBlob字段,图片存储,Blob和BLOB的问题,Clob,oracle
只需要安装oracle client在本地,然后配置好tns,输入连接名,用户名,密码,数据表的名称,文件名数据列名以及blob数据列名,就可以批量导出ORACLE数据库BLOB字段生成图片
可以从数据库中读取blob字段并插入到另一个表中,已经测试通过