oracle9i + jdk1.4中遇到的问题

碰到一个问题, oracle9+jdk1.4 ,varchar2(4000)的字段,明明只有600个汉字(不带标点),在插入数据库的时候(使用PreparedStatement 的setString()方法)被计算成2100多个字节?这是第一个问题,然后报错说插入不成功,超出此类型最大值?(No.2)这是为什么?怎么解决?

用下setCharacterStream try try

oracle 汉字占3个char

可是即使汉字占用3个字符的位置,那varchar2(4000)也应该可以插入1000多字啊,为什么超过600字就不行了?请您说的详细一点,谢谢

你的叶面form肯定用的是get而不是post
改一下就可以了

乎,首先谢谢你回复。
不过,根本不是这个原因。
问题我已经解决了,谢谢oldma ,让我想到了oracle字符集的问题。


oldma,你说的也有问题,oracle9i中存储UTF-8 AL16UTF16编码的数据,仍然是2位一个汉字。

setString时用GB2312写入

> oldma,你说的也有问题,oracle9i中存储UTF-8
> AL16UTF16编码的数据,仍然是2位一个汉字。

不好意思,你说的没错,我是指DB的char-set为SIMPLIFIED CHINESE_CHINA.ZHS16GBK
我想你一般应该用这个字符集,
而且oracle Binding Variable 的默认最大长度是2000
你说只能插入600个汉字,所以我估计你用的的是ZHS16GBK,应该可以插入666个汉字,呵呵