Oracle中存储大字符串问题!!

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

//原来的类型存储
new SqlParameterValue(Types.VARCHAR, knowVo.getRemark()),
。。。。

等待解答
...全文
693 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
老紫竹 2009-08-26
  • 打赏
  • 举报
回复
JDBC不能直接操作CLOB
其它的框架,比如Hibernate,映射用CLOB, 属性用String即可
zhouzongjiu 2009-08-26
  • 打赏
  • 举报
回复
用long类型试试
wangzhuoyan 2009-08-26
  • 打赏
  • 举报
回复
我这样修改后 new SqlParameterValue(Types.CLOB, knowVo.getRemark()),报错
java.lang.ClassCastException: java.lang.String
我这个knowVo.getRemark()),方法得到几万字。不知道为什么报错,是不是String类型还需要转换clob
wangzhuoyan 2009-08-26
  • 打赏
  • 举报
回复
搞定了,谢谢提示
honsire 2009-08-25
  • 打赏
  • 举报
回复
去Oracle官网下载example,比较容易搞定的。
doer_ljy 2009-08-25
  • 打赏
  • 举报
回复
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();
}
xiaozejun 2009-08-24
  • 打赏
  • 举报
回复
可以用lob类型啊
clob就是专门用来做这个的
根据版本的不同 他可以支持几GB的数据
Oracle中现在好像可以支持以TB为单位的数据了
wangzhuoyan 2009-08-24
  • 打赏
  • 举报
回复
好像还是存不进去,估计要转换,从String型到clob
zhangpeixv 2009-08-24
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 java2000_net 的回复:]
Type.CLOB
有这个类型吧!
[/Quote]

clob的确是大存储量时用的
这条路没错
老紫竹 2009-08-24
  • 打赏
  • 举报
回复
Type.CLOB
有这个类型吧!

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧