ResultSet rs = stmt.executeQuery("SELECT CLOBCOL FROM TEST_CLOB WHERE ID='111' FOR UPDATE");这个 for update 是什么意思?

解决方案 »

  1.   

    我做的是BLOB的,供参考:
    ...
            boolean blnTemp=conn.getAutoCommit();
            conn.setAutoCommit(false) ;
            stmt=conn.createStatement() ;
            ResultSet rs=stmt.executeQuery(strSQL) ;
            if(rs.next()){
              Blob blob=rs.getBlob(1) ;
              OutputStream os=((oracle.sql.BLOB)blob).getBinaryOutputStream() ;
              os.write(myBytes) ;
              os.flush() ;
              stmt.execute("commit") ;
              os.close();
              rs.close();
            }
            stmt.close();
            conn.setAutoCommit(blnTemp) ;
    ...
      

  2.   

    从程序上看,应该也是没有问题。
    我前段也写过这个和你的稍有不同。给你参考参考:
               weblogic.jdbc.rmi.SerialOracleClob clobtt=null;
               clobtt=(weblogic.jdbc.rmi.SerialOracleClob)rs.getClob(1);
               Writer wt=clobtt.getCharacterOutputStream();
     
               BufferedReader in = new BufferedReader(new FileReader(infile));          int c;
               while ((c=in.read())!=-1) {
               wt.write(c);
                 }          
               wt.flush();
               wt.close();
      

  3.   

    谢谢各位
      我的程序刚开始执行时是正确的,另外插入时,对于id字段取另外的数字也可以正确插入
    ,但是当我把原来的记录行删除之后,id字段还取原来的数字,重新执行插入就不行了。真是困惑
      另外在sql*plus 里边 含clob 的记录行怎样让它的内容全都显示出来啊
      

  4.   

    是不是删除记录后没有commit?所以存在相同ID字段值时出错?
      

  5.   

    果然是这样! 谢谢saintKnight !!!
      只剩后面一个问题了,一条记录的clob 字段含有很多行,但在sql*plus 里边只显示前面的两三行,是怎么回事?谢谢大家
      

  6.   

    再re一下, 现在的问题是:一条记录的clob 字段含有很多行,但在sql*plus 里边只显示前面的两三行,怎样让它全部显示出来?
     我想结贴了,谁知道的回一下吧