import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.sql.Connection;
import java.sql.SQLException;
/*
* 建数据表
create table IMAGE_TAB
(
IMG_ID VARCHAR2(2),
IMAGE BLOB
)
*/
/**
*
* @author wulihai
*/
public class test {
Connection conn = null;
public test(){
conn=DBUtil.getConn();
}
public void write(String file) throws SQLException, IOException{
java.sql.Statement stmt = null;
java.sql.Statement stmt2 = null;
java.sql.ResultSet rs = null;
conn.setAutoCommit(false);
String sql = "insert into image_tab(img_id,image) values(1,empty_blob())";
stmt = conn.createStatement();
stmt.executeUpdate(sql);
String sql2 = "select image from image_tab where img_id = 1 for update";
stmt2 = conn.createStatement();
rs = stmt2.executeQuery(sql2);
if(rs.next()){
oracle.sql.BLOB b = (oracle.sql.BLOB)rs.getBlob(1);
java.io.OutputStream os = b.getBinaryOutputStream();
java.io.InputStream is = new java.io.FileInputStream(file);
int i = 0;
while((i = is.read()) != -1){
os.write(i);
}
conn.commit();
if(is!=null){
is.close();
}
if(os!=null){
os.close();
}
System.out.println("写数据成功!");
}
}
private void read(String file) throws SQLException, IOException {
java.sql.Statement stmt = null;
java.sql.ResultSet rs = null;
String sql = "select image from image_tab where img_id=1 ";
stmt = conn.createStatement();
rs = stmt.executeQuery(sql);
if(rs.next()){
oracle.sql.BLOB b = (oracle.sql.BLOB)rs.getBlob(1);
java.io.InputStream is = b.getBinaryStream();
java.io.FileOutputStream fos = new java.io.FileOutputStream(file);
int i = 0;
while((i = is.read())!= -1){
fos.write(i);
}
if(fos!=null){
fos.close();
}
if(is!=null){
is.close();
}
}
}
private void update(String file) {
java.sql.Statement stmt = null;
java.sql.ResultSet rs = null;
OutputStream os=null;
InputStream is=null;
try {
conn.setAutoCommit(false);
stmt=conn.createStatement();
rs=stmt.executeQuery("select image from image_tab where img_id=1 for update");
if(rs.next()){
oracle.sql.BLOB b = (oracle.sql.BLOB)rs.getBlob(1);
os = b.getBinaryOutputStream();
is = new java.io.FileInputStream(file);
int i = 0;
while((i = is.read()) != -1){
os.write(i);
}
System.out.println("写数据成功!");
}
conn.commit();
} catch (SQLException e) {
e.printStackTrace();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally{
try {
if(is!=null){
is.close();
}
if(os!=null){
os.close();
}
}catch (IOException e) {
e.printStackTrace();
}
}
}
public static void main(String args[]) throws SQLException, IOException{
test er=new test();
er.write("D:\\wulihai\\合影.jpg");//读取文件系统,写blob
er.read("D:\\wulihai\\合影2.jpg");//读取blob,写文件系统
er.update("D:\\wulihai\\写给亲爱的猪.doc");//读取文件系统,更新blob
er.read("D:\\wulihai\\写给亲爱的猪2.doc");//再次读取blob,写文件系统
}
}
分享到:
相关推荐
VC 使用ADO技术存取BLOB二进制大数据,将大对象以二进制方式存储在数据库中,存取的方式与普通数据有所区别,里面包括有图像的存取,带个实例的工程比较完整。
C# oracle blob类型 读入与保存
VC++使用ADO实现BLOB二进制大对象数据的存取,本例子中以VC++读写Access数据库为例子,VS2013或者更高
oracle中用来存储大数据的BLOB(图片,文本,文件等)的 读写与复制方法
批量导出oracle bolb图片到本地文件
很多朋友在操作oracle数据库的clob,blob字段时不知道怎么插入和使用,这里提供读写范例。
只需要安装oracle client在本地,然后配置好tns,输入连接名,用户名,密码,数据表的名称,文件名数据列名以及blob数据列名,就可以批量导出ORACLE数据库BLOB字段生成图片
1.真实代码,节省你大量时间 2.pb11.2版本 一份劳动一份收获
Oracle blob字段上传下载 Oracle blob字段上传下载Oracle blob字段上传下载 Oracle blob字段上传下载
ADO实现大型二进制数据在数据库中的存取(论文)
C#访问oracle数据库类 1、执行非查询命令 2、执行查询命令 3、带blob字段读写
BLOB转为二进制字符 BLOB转为十六进制字符 2.生成BLOB Byte字节流转为BLOB Char字节流转为BLOB 二进制字符转为BLOB 十六进制字符转为BLOB 3.二进制 8位二进制转byte 二进制转十进制数 二进制转十六进制 4....
oracle Blob转换Clob
Struts2,Hibernate3,Spring2实现oracle存取blob字段(图片等二进制文件) Myeclipse6.0下开发 哈哈,原来2分的,现在免费了!!!!!!!!!!!!!!!!!!!!!!!!给评分哦!!!!!!!!!!!!!!!!
asp.net 将图片存储到数据库 读取数据库二进制文件
oracle Blob Clob 大数处理 代码 文件上传 下载
从oracle中的BLOB类型字段中取出照片,转存到mysql数据库中。思路是现将oracle中的照片存储在本地文件夹,在将本地图片上传到mysql中。
Python如何操作Oracle的Blob字段,
oracle blob 類型使用,及性能問題
java放blob到Oracle数据库 使用java把mp3等二进制文件放到Oracle数据库中