我的某一个字段需要存储大约1万字的文章。我数据库使用的oracle.
1.开始时候我的这个字段设置成的是varchar2,但是最多只能是4000个字,我上网查了下应该使用clob来存储,但是我更改字段一直包错,提示数据类型变更无效。
2.如果使用clob,我的数据层代码怎么更改呢?
return this.getOracleJdbcTemplate().update(sql,
//原来的类型存储
new SqlParameterValue(Types.VARCHAR, knowVo.getRe()),
。等待解答
1.开始时候我的这个字段设置成的是varchar2,但是最多只能是4000个字,我上网查了下应该使用clob来存储,但是我更改字段一直包错,提示数据类型变更无效。
2.如果使用clob,我的数据层代码怎么更改呢?
return this.getOracleJdbcTemplate().update(sql,
//原来的类型存储
new SqlParameterValue(Types.VARCHAR, knowVo.getRe()),
。等待解答
解决方案 »
- mysql是否支持blob 数据的 批处理插入,求教
- JSP翻页问题
- 在html中使用struts2标签
- weblogic上多个应用挂在一个server下日志混乱!(在线等高手)
- Spring+hibernate中关于一对多表在List中显示的问题
- 问一个struts用户登陆问题!(刚天始学struts,多多关照)
- spring+struts+ejb+jpa,实体映射上配有懒加载的,在web端调用会导致no sesssion or session has closed错误
- 请问JBOSS怎样添加虚拟目录
- 使用appfuse的问题
- 用jb7+wl7.0开发部署好一个sessionbean,测试程序成功,把测试程序拿到客户端运行出错?急!!!
- 如何将tomcat的temp中的文件删除
- hibernate 级联删除问题
clob的确是大存储量时用的
这条路没错
clob就是专门用来做这个的
根据版本的不同 他可以支持几GB的数据
Oracle中现在好像可以支持以TB为单位的数据了
不过这些字段得更新方法是不同的,
下面仅仅是个例子。
//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();
}
java.lang.ClassCastException: java.lang.String
我这个knowVo.getRe()),方法得到几万字。不知道为什么报错,是不是String类型还需要转换clob
其它的框架,比如Hibernate,映射用CLOB, 属性用String即可