用java實現 把一個文件保存到oracle數據庫表中


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();

        }
    }
} 

來源:https://www.iteye.com/problems/5626


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM