//一般是先通过select ... for update锁定blob列,然后写入blob值,然后提交。要用到特定的Oracle BLOB类。
《--------保存图片到数据库--------------》
public void savePic(InputStream is){
String insertsql = "insert into pic(id,pic) values(1,empty_blob())";//首先插入一个空的Blob类型
Connection conn = null;
Statement stmt = null;
PreparedStatement ps = null;
ResultSet rs = null;
try {
conn = ds.getConnection();
conn.setAutoCommit(false);
stmt = conn.createStatement();
int rt = stmt.executeUpdate(insertsql);
if(rt > 0){
System.out.println("initialization succeed!!");
String preCursor = "select id,pic from pic where id='1' for update";
rs = stmt.executeQuery(preCursor);//锁定列
rs.next();
Blob b = (Blob)rs.getBlob("pic");
BufferedOutputStream bos = new BufferedOutputStream(b.setBinaryStream(0L));
BufferedInputStream bis = new BufferedInputStream(is);
int bytes;
try {
while((bytes = bis.read()) != -1){
bos.write(bytes);
}
bis.close();
bos.close();
conn.commit();
} catch (IOException e) {
e.printStackTrace();
}
}
} catch (SQLException e) {
e.printStackTrace();
} finally{