您的位置:首页 > 产品设计 > UI/UE

操作clob 大字段的can bind a LONG value only for insert into a LONG column 异常处理

2009-05-27 17:25 871 查看
开发架构:spring 2.0

DAO层:ibatis 2.3

DB: oracle 10g

需要在spring的application.xml的关于clob的配置。如下源码:

==========================================

<!-- spring提供的对ibatis大字段处理 -->
<bean id="nativeJdbcExtractorNew" class="org.springframework.jdbc.support.nativejdbc.CommonsDbcpNativeJdbcExtractor" lazy-init="true"/>

<bean id="oracleLobHandlerNew" class="org.springframework.jdbc.support.lob.OracleLobHandler" lazy-init="true">
<property name="nativeJdbcExtractor"><ref local="nativeJdbcExtractorNew"/></property>
</bean>

<!-- SqlMap setup for iBATIS Database Layer -->
<bean id="sqlMapClientNew" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
<property name="dataSource" ref="dataSourceNew" />
<!-- 大字段处理 -->
<property name="lobHandler"><ref local="oracleLobHandlerNew"/></property>
</bean>

============================================

对clob的操作出现can bind a LONG value only for insert into a LONG column ,主要问题是在引入jar包上。

先说下我做的项目中大字段出现的问题时的系统引入的jar包,oracle版本:10g,用的驱动版本:classes12.jar的版本10.2.0.1.0。并且项目中同时还有ojdbc14.jar(10.02版本) 、ojdbc14dms.jar、classes12dms.jar、ojdbc14dms_g.jar这几个都设计数据库操作的jar包,Tomcat的lib下也是classes12.jar(10.2.0.1.0版本)。在项目具体模块中涉及到大字段的操作时候,始终出现can bind a LONG value only for insert into a LONG column 的sql异常。

在网上查了很多资料,都倾向于是使用的oracle版本和classes12.jar的版本不一致的问题所造成,因为项目使用的是oracle10g,换了classes12.jar(10.2.0.1.0版本)包与所使用的oracle版本一致了,但是在操作时问题依然出现sql的异常。

=================================================

解决方式:

1.删除项目中的ojdbc14.jar(10.02版本) 、ojdbc14dms.jar、classes12dms.jar、

ojdbc14dms_g.jar、classes12.jar(10.2.0.1.0版本)这样的jar。

2.同时删除tomcat/lib下的classes12.jar包。

3.用ojdbc14.jar(注意:Oracle JDBC Driver version - 10.1.0.2.0)添加到项目和tomcat中。

重启app,操作相应的用到大字段的模块,问题解决。

================================================================

问题的原因:

驱动包classes12.jar用于JDK 1.2和JDK 1.3,而ojdbc14.jar用于JDK 1.4及以上,所以尽量不要使用classes12.jar;

从oracle 9.2之后,对jdbc 的驱动程序的命名将有所改变,JDK1.1,JDK1.2的驱动程序名(class12.jar)将不再改变,一直沿用下去,从JDK1.4开始驱动程序名将所有改变,例如:JDK1.4的驱动名为ojdbc14.jar 。JDK1.5的驱动名为ojdbc15.jar
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐