日期:2014-05-17  浏览次数:20789 次

奇怪问题:关于使用java插入数据到oracle
环境:
开发环境:Windows + jdk1.6
weblogic:Windows 下weblogic10.3
数据库:Unix 下oracle 10g 字符编码为NLS_CHARACTERSET=ZHS16GBK 

情况这样,使用java先查询一个表a的数据,因为b表要使用a表的某些字段,故做一些操作,将b表实体类的一些字段的值set为a表中相应字段的值,然后在插入到oracle的b表中。其中a和b均有itemname这个字段,数据库中设置的长度为120字节。

其中有一条数据itemname为38个汉字,但是在插入的时候报异常如下:
java.sql.SQLException: ORA-12899: value too large for column "CCICCIRC"."STATMONTHVALUE"."ITEMNAME" (actual: 133, maximum: 120)

注:STATMONTHVALUE 相当于b表

------解决方案--------------------
确定一下是不是有空格或字符集对不对
------解决方案--------------------
select lengthb('汉') from dual;测试汉字字节长度,另外你也可以在测试库上手工执行你的SQL看能不能插进去,看看是你的Java还是你的数据库问题。
------解决方案--------------------
探讨
环境:
开发环境:Windows + jdk1.6
weblogic:Windows 下weblogic10.3
数据库:Unix 下oracle 10g 字符编码为NLS_CHARACTERSET=ZHS16GBK

情况这样,使用java先查询一个表a的数据,因为b表要使用a表的某些字段,故做一些操作,将b表实体类的一些字段的值set为a表中相应字段的值,然后在插入到oracle……

------解决方案--------------------
探讨

引用:

引用:
环境:
开发环境:Windows + jdk1.6
weblogic:Windows 下weblogic10.3
数据库:Unix 下oracle 10g 字符编码为NLS_CHARACTERSET=ZHS16GBK

情况这样,使用java先查询一个表a的数据,因为b表要使用a表的某些字段,故做一些操作……