java.sql.PreparedStatement pstmt = null; 
ResultSet rs = null; 
String query = ""; 
 
conn.setAutoCommit(false); 
       query = "insert into clobtest_table(id,picstr) values(?,empty_clob())"; 
java.sql.PreparedStatement pstmt = conn.prepareStatement(query); 
pstmt.setString(1,"001"); 
pstmt.executeUpdate(); 
pstmt = null 
       query = "select picstr from clobtest_table where id = '001' for update"; 
pstmt = con.prepareStatement(query) 
rs= pstmt.executeQuery(); 
 
oracle.sql.CLOB clobtt = null; 
if(rs.next()){ 
    clobtt = (oracle.sql.CLOB)rs.getClob(1); 

Writer wr = clobtt.getCharacterOutputStream(); 
wr.write(strtmp); 
wr.flush(); 
wr.close(); 
rs.close(); 
con.commit(); 
 
  ------------------------------------------------------
           我们还年轻牛奶会有的奶牛也会有的 
             可天天在 csdn 混这些会有吗 ??

解决方案 »

  1.   

    晕,插CLOB 用ps.setObject可以把 byte[] 本身也应该没啥限制喔,可是我字符多了就是不行啊
      

  2.   

    //小红,搞定了,赶紧给分!  public void InsertTest(Connection locConn)
      {
        String tmpstr = new String() ;
        for (int i = 0 ; i < 200 ; i++)
        {
          tmpstr=tmpstr+"irlovesthis" ;
        }
        System.out.println(tmpstr.length()) ;    String sql = "Insert Into t_test_varchar(" +
            "col_ID ," +
            "col_contents ) " +
            "Values(14,?)" ;    java.sql.PreparedStatement pstmt=null;
        try
        {
          pstmt=locConn.prepareStatement(sql);
          DataInputStream in3 =
            new DataInputStream(
              new ByteArrayInputStream(tmpstr.getBytes()));
          int i=10000;
          pstmt.setAsciiStream(1,in3,i);
          pstmt.execute();
        }
        catch (Exception e)
        {
          e.printStackTrace();
          System.out.println("Error Insert t_test_varchar" + e) ;
        }  }