📄 writeblob.java
字号:
package com.jdbclab;
import java.sql.*;
import java.io.*;
public class WriteBlob
{
public static void main(String[] args){
/* create table t_sd0709_blob(
id number(12) primary key,
filename varchar(50) not null,
blobData blob);
*/
String filename = args[0];
Blob blob = null;
Connection con = null;
PreparedStatement ps = null;
ResultSet rs = null;
String sql = "";
try{
con = JdbcUtil.getConnection();
con.setAutoCommit(false);
//1.请求oracle为我们制造一个空的blob字段值
sql = "insert into t_sd0709_blob "+
"values(?,?,empty_blob())";
ps = con.prepareStatement(sql);
ps.setInt(1,1);
ps.setString(2,filename);
ps.executeUpdate();
JdbcUtil.release(ps);
//2.将空的blob字段值读回来
sql = "select blobData from t_sd0709_blob "+
"where id=? for update";
ps = con.prepareStatement(sql);
ps.setInt(1,1);
rs = ps.executeQuery();
if(rs!=null){
if(rs.next())
blob = rs.getBlob(1);
}
//3.将文件中的内容倒入blob对象中
InputStream in = new FileInputStream(filename);
OutputStream out =
blob.setBinaryStream(0);
byte[] content = new byte[in.available()];
in.read(content);
out.write(content);
in.close();
out.close();
//4.将存有数据的blob对象更新回数据库
sql = "update t_sd0709_blob "+
"set blobData=? where id=?";
JdbcUtil.release(rs,ps,null);
ps = con.prepareStatement(sql);
ps.setBlob(1,blob);
ps.setInt(2,1);
ps.executeUpdate();
con.commit();
}catch(Exception e){
e.printStackTrace();
if(con!=null){
try{
con.rollback();
}catch(Exception ex){
ex.printStackTrace();
}
}
}finally{
JdbcUtil.release(null,ps,con);
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -