• 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();
                }
            }
        }
    
    }
  • 相关阅读:
    gitLab、docker
    Spring源码分析
    Tomcat堆内存分析
    Kafka入门一
    Java NIO
    spring注解
    websocket即时通讯
    pycharm安装dlib库
    python+opencv人脸识别是否戴口罩
    2021年暑假周总结1
  • 原文地址:https://www.cnblogs.com/Kevin-1992/p/12608392.html
Copyright © 2020-2023  润新知