我的某一个字段需要存储大约1万字的文章。我数据库使用的oracle.
1.开始时候我的这个字段设置成的是varchar2,但是最多只能是4000个字,我上网查了下应该使用clob来存储,但是我更改字段一直包错,提示数据类型变更无效。
2.如果使用clob,我的数据层代码怎么更改呢?
                         return this.getOracleJdbcTemplate().update(sql, 

//原来的类型存储
new SqlParameterValue(Types.VARCHAR, knowVo.getRe()),
                           。等待解答

解决方案 »

  1.   


    clob的确是大存储量时用的
    这条路没错
      

  2.   

    好像还是存不进去,估计要转换,从String型到clob
      

  3.   

    可以用lob类型啊 
    clob就是专门用来做这个的
    根据版本的不同 他可以支持几GB的数据
    Oracle中现在好像可以支持以TB为单位的数据了
      

  4.   

    oracle的long和clob是用来存储大量字符的数据类型,
    不过这些字段得更新方法是不同的,
    下面仅仅是个例子。
    //String sql1="insert into test values(2,empty_clob())";
    //ResultSet rs3=stmt.executeQuery(sql1);
    String sql12="insert into test values(?,?)";
    PreparedStatement pstmt1=con.prepareStatement(sql12);
    pstmt1.setInt(1,2);
    pstmt1.setClob(2,oracle.sql.CLOB.empty_lob());
    pstmt1.executeUpdate();
    String sqll2="select content from test where id=2 for update";
    ResultSet rss2=stmt.executeQuery(sqll2);
    if(rss2.next()){
    CLOB clob = ((OracleResultSet)rss2).getCLOB(1);
    clob.putString(1,"affffffffffdfdfdfdddddddffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdddfff");
    String sql1="update test set content=? where id=2";
    PreparedStatement pstmt=con.prepareStatement(sql1);
    pstmt.setClob(1,clob);
    pstmt.executeUpdate();
    pstmt.close();
    }
      

  5.   

    去Oracle官网下载example,比较容易搞定的。
      

  6.   

    我这样修改后 new SqlParameterValue(Types.CLOB, knowVo.getRe()),报错
    java.lang.ClassCastException: java.lang.String
    我这个knowVo.getRe()),方法得到几万字。不知道为什么报错,是不是String类型还需要转换clob
      

  7.   

    JDBC不能直接操作CLOB
    其它的框架,比如Hibernate,映射用CLOB, 属性用String即可