你jsp插入的时候不要用preparedstatement.setString();
应该用preparedstatement.setCharacterStream();
肯定就没有问题了,不是oracle的问题,是java的问题。

解决方案 »

  1.   

    1、Varchar2(4000)是可变字符串存储的最大长度,如果超出自然会报错。
    2、关于Long型,如ncimfs所说需要使用PreparedStatement的setCharacterStream()方法
    3、不推荐使用Long型,建议使用Clob,可以使用oracle.???????(忘了包名了).CLOB中的相关方法来操作,具体操作可以到opn上去查代码,我们单位些数据库常用包时就是到OPN上查的资料。大概操作如下:
    CLOB clob = CLOB.createTemp???(oracle_connection);
    ....
    ///操作clobpreparedStatement.setClob(1,(Clob)clob);//作为参数传递到预处理的SQL中
    preparedStatement.execute();
      

  2.   

    谢谢两位大哥!我还有一点不明白的,我用Long型,stm.setCharacterStream(1,content);编译通过不了,
    原因是content要为reader类型?!!!!这里的content是一个String......我该怎么解决啊~
      

  3.   

    这个你要将String转一下的
    stm.setCharacterStream(1, new StringReader(content), content.length());