首页 > 代码库 > JDBC学习笔记:用JDBC处理大段数据

JDBC学习笔记:用JDBC处理大段数据

1.数据库——创建数据表

1 create table  clob_test2 (3 id integer not null auto_increment primary key,4 big_text text not null5 );

2.用JDBC处理大段文本数据

(1)将文本数据写入数据库

 1     @Test 2     public void create() throws SQLException, IOException { 3         Connection conn = null; 4         PreparedStatement ps = null; 5         ResultSet rs = null; 6         try { 7             // 建立连接 8             conn = JdbcUtils.getConnection(); 9             String sql = "insert into clob_test(big_text) values(?)";10             ps = conn.prepareStatement(sql);11             File file = new File("src/cn/itcast/jdbc/JdbcUtils.java");12             Reader reader = new BufferedReader(new FileReader(file));13             ps.setCharacterStream(1, reader, (int)file.length());14             15             int i = ps.executeUpdate();16             reader.close();17             System.out.println("i = " + i);18         } finally {19             JdbcUtils.free(rs, ps, conn);20         }21     }

(2)从数据库中读出文本数据

 1     @Test 2     public void read() throws SQLException, IOException { 3         Connection conn = null; 4         Statement st = null; 5         ResultSet rs = null;  6         try { 7             conn = JdbcUtils.getConnection(); 8             st = conn.createStatement(); 9             rs = st.executeQuery("select big_text from clob_test");10             11             while (rs.next()) {12                 Clob clob = rs.getClob(1);13                 Reader reader = clob.getCharacterStream();14                 // reader = rs.getCharacterStream(1)15                 16                 //将从数据库中读取的大段文本数据写入到JdbcUtils_bak.java文件中17                 File file = new File("JdbcUtils_bak.java");18                 Writer writer = new BufferedWriter(new FileWriter(file));19                 char[] buff = new char[1024];20                 21                 for (int i = 0; (i=reader.read(buff)) > 0;) {22                     writer.write(buff, 0, i);23                 }24                 writer.close();25                 reader.close();26             }27         } finally {28             JdbcUtils.free(rs, st, conn);29         }30     }

(3)将二进制类型的数据写入数据库

 1     @Test 2     public void create() throws SQLException, IOException { 3         Connection conn = null; 4         PreparedStatement ps = null; 5         ResultSet rs = null; 6         try { 7             conn = JdbcUtils.getConnection(); 8             String sql = "insert into blob_test(big_bit) values(?)"; 9             ps = conn.prepareStatement(sql);10             File file = new File("14.jpg");// 文件放在根目录下,大小不能超过64k11             InputStream in = new BufferedInputStream(new FileInputStream(file));12             13             ps.setBinaryStream(1, in, (int)file.length());14             15             int i = ps.executeUpdate();16             in.close();17             System.out.println("i = " + i);18         } finally {19             JdbcUtils.free(rs, ps, conn);20         }21     }

 (4)从数据库读取二进制类型的数据

 1     @Test 2     public void read() throws SQLException, IOException { 3         Connection conn = null; 4         Statement st = null; 5         ResultSet rs = null; 6         try { 7             conn = JdbcUtils.getConnection(); 8             st = conn.createStatement(); 9             rs = st.executeQuery("select big_bit from blob_test");10             11             while(rs.next()) {12                 InputStream in = rs.getBinaryStream(1);13                 14                 File file = new File("14_bak.jpg");15                 OutputStream out = new BufferedOutputStream(new FileOutputStream(file));16                 byte[] buff = new byte[1024];17                 for (int i = 0; (i = in.read(buff)) > 0;) {18                     out.write(buff, 0, i);19                 }20                 out.close();21                 in.close();22             }23         } finally {24             JdbcUtils.free(rs, st, conn);25         }26     }

 

 

    @Test
    public void read() throws SQLException, IOException {
        Connection conn = null;
        Statement st = null;
        ResultSet rs = null;
        try {
            conn = JdbcUtils.getConnection();
            st = conn.createStatement();
            rs = st.executeQuery("select big_bit from blob_test");
            
            while(rs.next()) {
                InputStream in = rs.getBinaryStream(1);
                
                File file = new File("14_bak.jpg");
                OutputStream out = new BufferedOutputStream(new FileOutputStream(file));
                byte[] buff = new byte[1024];
                for (int i = 0; (i = in.read(buff)) > 0;) {
                    out.write(buff, 0, i);
                }
                out.close();
                in.close();
            }
        } finally {
            JdbcUtils.free(rs, st, conn);
        }
    }

JDBC学习笔记:用JDBC处理大段数据