请教:为什么我的ORACLE无法插入超过一定数量的字符串信息(怪)?

03-12-04 mojo
    

最近碰到一个关于JDBC的怪问题,我们用STRUTS+TORQUE做项目,前台显示用VELOCITY,数据库是ORACLE的,但是在做数据录入时(通过BS的界面),总是报错,说“数据大小超出了此类型的最大值”,但在数据库中该字段是VARCHAR2,4000,而在表单中该字段所对应的输入框(TEXTAREA),我只能输入最多1322字节的内容,一旦超过哪怕一个字节,数据就无法录入。

和同事讨论来去感觉是JDBC驱动的问题。不知道你们是否遇到过类似的问题?有什么好的解决办法吗?或者是我们哪里有错误?还请不吝赐教。

相关信息:

使用CLASS12.JAR为JDBC驱动ORACLE8i,该提交的表单共有10个字段。另有2个HIDDEN字段。

    

lizh
2003-12-04 19:17

你这个1322字节长度是在什么地方测到的?

你用什么方法得到1322字节,String.length()吗?他显示的可是字符数。

你输入的都是汉字吗?还是什么都有?

crogers
2003-12-04 23:39

oracle字符集的问题,在你选择的字符集里面,显然一个汉字占3个字节

当然,汉字双字节,你也是要考虑的

mojo
2003-12-05 09:08

回lizh:

我的信息输入表单有多个Input field,比如主题,关键字什么的,出现问题的是在输入内容的Textarea。在ActionForm中是定义为String的,但在表单中我输入的内容(中英文都有,中文为主)最大长度是1322个字符。此数据是将允许输入的内容COPY到Ultraedit中用Byte Count得到的,它是将汉字作为双字节进行统计的。一旦超过信息录入就失败。

回crogers:

关于oracle字符集的问题,恕我才疏,不是很理解,烦请详述。

谢谢你们的回复!

lizh
2003-12-06 09:03

要获得输入的长度,建议你最好在你的action中获得。

至于数据库字符集的问题,简单的测试方法是你可以设置一个varchar2(2)的字段看看能不能插入汉字。(varchar2最多也只能插入2000个汉字)

如果你想多插入一些汉字又不想使用lob,我向你推荐使用nvarchar2(4000)

nvarchar2 类型是按照字符存放的(可存放4000个汉字)。不受字符集设置的影响。

4Go 1 2 3 4 下一页