zoukankan      html  css  js  c++  java
  • Blob存储实践

    /**
     * @author Kevin 2018-1-16
     * 
     * Blob(二进制大对象)对象的存储 jdbc实现。
     *
     */
    public class BlobObjectDemo {
    
        public static void main(String[] args) throws IOException {
            try {
                Class.forName("oracle.jdbc.driver.OracleDriver");
            } catch (ClassNotFoundException e1) {
                e1.printStackTrace();
            }
            Connection conn = null;
            Statement state = null;
            ResultSet rs = null;
    
            try {
                conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl", "demo", "demo");
    
                state = conn.createStatement();
                String id = UUID.randomUUID().toString().replace("-", "");
                String insertSql = "insert into test_blob values('"+id+"',empty_blob())";
                state.execute(insertSql);
    
                File f = new File("D:\壁纸\12 (1).jpg");
                FileInputStream in = new FileInputStream(f);
    
                String sql = "select * from test_blob where id='"+id+"' for update";
    
                rs = state.executeQuery(sql);
    
                while(rs.next()){
                    Blob b = rs.getBlob(2);
                    OutputStream out = b.setBinaryStream(0);
                    byte[] bytes = new byte[in.available()];
                    int len = 0;
                    while((len = in.read(bytes)) != -1){
                        out.write(bytes, 0, len);
                    }
                }
    
            } catch (SQLException e) {
                System.err.println("出错回滚");
                e.printStackTrace();
                try {
                    conn.rollback();
                } catch (SQLException e1) {
                    e1.printStackTrace();
                }
            } finally{
                try {
                    rs.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
    
                try {
                    state.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
    
                try {
                    conn.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }
    
    }
  • 相关阅读:
    P4995 跳跳!
    P4306 [JSOI2010]连通数
    P1339 [USACO09OCT]热浪Heat Wave
    P2002 消息扩散
    P3388 【模板】割点(割顶)
    P1656 炸铁路
    P2863 [USACO06JAN]牛的舞会The Cow Prom
    P1516 青蛙的约会
    3.从尾到头打印链表
    2.替换空格
  • 原文地址:https://www.cnblogs.com/Kevin-1992/p/12608392.html
Copyright © 2011-2022 走看看