public class InsertBlobData { Connection con = null; /** * @param args * @throws Exception */ public static void main(String[] args) throws Exception { // TODO Auto-generated method stub InsertBlobData data = new InsertBlobData(); data.insertBlogInfo("002jpg", "sdsdfdf", "2007-02-12", "002.jpg"); } public void insertBlogInfo(String jmzh, String xm, String smsj, String fileName) throws Exception { // try { con = ConnectionPoliceFactory.getFactory().getConnection(); // } catch (ClassNotFoundException e) { // // TODO Auto-generated catch block // e.printStackTrace(); // } // 处理事务 boolean defaultCommit = con.getAutoCommit(); con.setAutoCommit(false); Statement st = con.createStatement(); // 插入一个空对象 st.executeUpdate("insert into ksren_txxx(jmzh,xm,smsj,txsj) values('" + jmzh + "','" + xm + "',to_date('" + smsj + "','yyyy-mm-dd'),empty_blob())"); // 用for update方式锁定数据行 ResultSet rs = st .executeQuery("select txsj from ksren_txxx where jmzh='" + jmzh + "' and xm='" + xm + "' for update"); if (rs.next()) { // 得到java.sql.Blob对象,然后Cast为oracle.sql.BLOB oracle.sql.BLOB blob = (oracle.sql.BLOB) rs.getBlob(1); // 到数据库的输出流 OutputStream outStream = blob.getBinaryOutputStream(); // 这里用一个文件模拟输入流 InputStream fin = new FileInputStream(new File(fileName)); // 将输入流写到输出流 byte[] b = new byte[blob.getBufferSize()]; int len = 0; while ((len = fin.read(b)) != -1) { outStream.write(b, 0, len); // blob.putBytes(1,b); } // 依次关闭(注意顺序) fin.close(); outStream.flush(); outStream.close(); con.commit(); /* 恢复原提交状态 */ con.setAutoCommit(defaultCommit); con.close(); } } }
Oracle数据库存入文件或图片
猜你喜欢
转载自1260533105.iteye.com/blog/2171019
今日推荐
周排行