急呀,clob保存数据的问题

tyjohn 2010-01-08 07:06:50
小弟的代码:
public void save(final Lob lob) {
final String keyId = super.generateId(lob);
String sql = " INSERT INTO ta_lob(id,foreignid,type,content,contentall)"
+ " VALUES(?,?,?,?,?)";
jdbcTemplate.execute(sql,
new AbstractLobCreatingPreparedStatementCallback(
lobHandler) {
protected void setValues(PreparedStatement ps,
LobCreator lobCreator) throws SQLException{
ps.setString(1, keyId);
ps.setString(2, lob.getForeignId());
ps.setString(3, lob.getType());
lobCreator.setClobAsString(ps, 4, lob.getContent());
lobCreator.setClobAsString(ps, 5, lob.getContentAll());
}
});
}
配置文件:
<bean id="nativeJdbcExtractor"
class="org.springframework.jdbc.support.nativejdbc.SimpleNativeJdbcExtractor"
lazy-init="true" />
<bean id="oracleLobHandler"
class="org.springframework.jdbc.support.lob.OracleLobHandler"
lazy-init="true">
<property name="nativeJdbcExtractor" ref="nativeJdbcExtractor" />
</bean>
错误信息:
org.springframework.dao.DataAccessResourceFailureException: Could not create Oracle LOB; nested exception is java.lang.AbstractMethodError
Caused by: java.lang.AbstractMethodError
at oracle.jdbc.driver.OracleConnection.unwrapCompletely(OracleConnection.java:5149)
at oracle.jdbc.driver.OracleConnection.physicalConnectionWithin(OracleConnection.java:5198)
at oracle.sql.CLOB.createTemporary(CLOB.java:1009)
at oracle.sql.CLOB.createTemporary(CLOB.java:956)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:324)
at org.springframework.jdbc.support.lob.OracleLobHandler$OracleLobCreator.prepareLob(OracleLobHandler.java:393)
at org.springframework.jdbc.support.lob.OracleLobHandler$OracleLobCreator.createLob(OracleLobHandler.java:340)
at org.springframework.jdbc.support.lob.OracleLobHandler$OracleLobCreator.setClobAsString(OracleLobHandler.java:265)
at com.dhcc.ta.dao.LobDao$1.setValues(LobDao.java:44)
at org.springframework.jdbc.core.support.AbstractLobCreatingPreparedStatementCallback.doInPreparedStatement(AbstractLobCreatingPreparedStatementCallback.java:70)
at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:538)
at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:566)
at com.dhcc.ta.dao.LobDao.save(LobDao.java:36)
at com.dhcc.ta.service.LobService.save(LobService.java:17)
at com.dhcc.ta.service.LobService$$FastClassByCGLIB$$452e3693.invoke()
at net.sf.cglib.proxy...

我的是9i的数据库,读取clob没有问题,就是插入的时候包错,驱动包是ojdbc14.jar(1.1M)9i的驱动包
并且发现如果换成是ojdbc14.jar(1.5M)10g的驱动包就没问题,但是10g的驱动包有会对我的其它代码造成影响(时间无法显示时分秒),郁闷呀
...全文
232 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
JavaAlpha 2010-01-09
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 chuan122345 的回复:]
http://topic.csdn.net/u/20071210/13/80d0c26f-da2d-4231-a739-bbdf86da27e9.html  这个人跟你遇到的问题一样,他已经解决。你参考下。
[/Quote]

参考
SambaGao 2010-01-09
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 crazylaa 的回复:]
oracle 官方文档 CLOB 10g
http://www.oracle.com/technology/sample_code/tech/java/codesnippet/jdbc/clob10g/handlingclobsinoraclejdbc10g.html
[/Quote]

..
cooler4k 2010-01-09
  • 打赏
  • 举报
回复
ORACLE中的的BLOB,CLOB不能直接插入,只能先插入其它信息,再更新BLOB,CLOB字段
No-zero 2010-01-09
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 crazylaa 的回复:]
oracle 官方文档 CLOB 10g
http://www.oracle.com/technology/sample_code/tech/java/codesnippet/jdbc/clob10g/handlingclobsinoraclejdbc10g.html
[/Quote]

karno2009 2010-01-08
  • 打赏
  • 举报
回复
学习
weihthchk 2010-01-08
  • 打赏
  • 举报
回复
为何不直接使用setClob方法?
左大神在这 2010-01-08
  • 打赏
  • 举报
回复
http://topic.csdn.net/u/20071210/13/80d0c26f-da2d-4231-a739-bbdf86da27e9.html 这个人跟你遇到的问题一样,他已经解决。你参考下。

62,615

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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