java 操作clob

之前在学校的时候做的都是练习,小儿科,遇到的情况完全都在自己的设想范围内。最近老是遇到字段溢出的情况,但是varchar2好像最长也只有4000个字符。所以不得不另辟蹊径,就找上了clob字段。

package test;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.Writer;

import java.sql.Clob;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

import oracle.sql.CLOB;

public class ClobTest {
	 private static Connection conn;  
     
	    static {  
	        try {  
	            Class.forName("oracle.jdbc.driver.OracleDriver");  
	            conn = DriverManager.getConnection(  
	                    "jdbc:oracle:thin:@localhost:1521:orcl","wch","wch123");  
	        } catch (ClassNotFoundException e) {  
	            e.printStackTrace();  
	        } catch (SQLException e) {  
	            e.printStackTrace();  
	        }  
	    }  
	      
	    public static void main(String[] args) throws SQLException, IOException {  
	      //  testInsert();  
	       // testUpdate();  
	        testRead();  
	    }  
	  
	    private static void testInsert() throws SQLException {  
	        String sql = "insert into CLOBTEST values(1, empty_clob(),empty_clob())";  
	        Statement stm = conn.createStatement();  
	        stm.execute(sql);  
	    }  
	      
	    private static void testUpdate() throws SQLException, IOException {  
	        String sql = "select context,c2 from CLOBTEST where id = 1 for update";  
	        Statement stm = conn.createStatement();  
	        ResultSet rs = stm.executeQuery(sql);  
	        while (rs.next()) {  
	            oracle.sql.CLOB c = (CLOB) rs.getClob(1);  
	            Writer w = c.setCharacterStream(1);
	            w.write("wchwchwch\r\n");
	            w.write("哈哈哈\r\n哈哈哈ds", 2, 5);
	            w.flush();
	            w.close();
	            c = (CLOB) rs.getClob(2);
	            w = c.setCharacterStream(1);
	            w.write("dingsen");
	            w.flush();
	            w.close();
	        }
	        conn.commit(); 
	    }  
	      
	    private static void testRead() throws SQLException, IOException {  
	        String sql = "select context,c2 from CLOBTEST where id = 1";  
	        PreparedStatement pstm = conn.prepareStatement(sql);  
	        ResultSet rs = pstm.executeQuery();  
	        System.out.println("-----------------------------------");
	        while (rs.next()) {  
	            Clob clob = rs.getClob(1);  
	            BufferedReader r = new BufferedReader(clob.getCharacterStream());  
	            char[] cs = new char[10]; 
	            int total = 0;
	            StringBuilder sb = new StringBuilder();
	            while ((total = r.read(cs)) != -1) {  
	                sb.append(cs,0,total);
	            }  
	            System.out.println(sb.toString());
	        }  
	    }  
}

posted @ 2013-10-22 22:48  skyding  阅读(1716)  评论(0编辑  收藏  举报