oracle9i + jdk1.4中遇到的问题

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

crogers
2003-11-06 09:35
用下setCharacterStream try try

oldma
2003-11-06 10:32
oracle 汉字占3个char

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

ccmoon
2003-11-06 18:52
你的叶面form肯定用的是get而不是post
改一下就可以了

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


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

xfzhu2003
2003-11-19 10:31
setString时用GB2312写入

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

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