Oracle处理Blob类型数据

来源:互联网 发布:王小云 破解md5 算法 编辑:程序博客网 时间:2024/05/03 23:38
Connection conn = getConnection();conn.setAutoCommit(false);String sql = "insert into test(id,image) values(?,empty_blob())";PreparedStatement st = conn.prepareStatement(sql);st.setInt(1, 1);st.executeUpdate();String sql2 = "select image from test where id=1 for update";st = conn.prepareStatement(sql2);ResultSet rs = st.executeQuery();if(rs.next()){BLOB blob = (BLOB) rs.getBlob(1);OutputStream out = blob.getBinaryOutputStream();FileInputStream in = new FileInputStream("c:\\resume.jpg");byte buffer[] = new byte[1024];int len = 0;while((len=in.read(buffer))>0){out.write(buffer, 0, len);}in.close();out.close();}conn.commit();rs.close();st.close();conn.close();

 

第一步:先插入一条空的Blob类型的记录

第二步:获得一个Blob的Cursor,select image from test where id=1 for update ;必须加For Update 锁定该行,直到该行被修改完毕,保证不产生并发冲突;

第三步:利用IO和获得到的Cursor往数据库读写数据

 

下面是读数据:

Connection conn = getConnection();String sql = "select image from test where id=1";PreparedStatement st = conn.prepareStatement(sql);ResultSet rs = st.executeQuery();if(rs.next()){BLOB blob = (BLOB) rs.getBlob(1);InputStream in = blob.getBinaryStream();FileOutputStream out = new FileOutputStream("c:\\2.jpg");byte buffer[] = new byte[1024];int len = 0;while((len=in.read(buffer))>0){out.write(buffer,0,len);}out.close();in.close();rs.close();st.close();conn.close();}


 

原创粉丝点击