每次向数据库插入中文时都出现下面的错误:
ORA-01461: can bind a LONG value only for insert into a LONG column
望高手指点一二》。

解决方案 »

  1.   

    varchar2型,应该不会出错!
      

  2.   

    我是通过JSp页面提交到servlet处理,在经过jbeen将数据插入数据库中jbenn代码:
    public boolean addmessage(Message message)
    {

    try {
    ps=ConnDb.getInstance().getConn().prepareStatement("insert into message values(sq1.nextval,?,?,?,?,?,?,?,?,sysdate)");
    ps.setString(1, message.getUsername());
    ps.setString(2, message.getTitle());
    ps.setString(3, message.getEmail());
    ps.setString(4, message.getAddress1());
    ps.setString(5, message.getQq());
    ps.setString(6, message.getHomepage());
    ps.setString(7, message.getBoard());
    ps.setString(8, message.getIp());
    r=ps.executeUpdate();
    if(r>0){
    return true;
    }
    } catch (SQLException e) {
    e.printStackTrace();
    }
    return flag;
    }
      !!!!r=ps.executeUpdate();这句话有错!
      

  3.   

    可能是你的一些varchar2列插入的字符数,过长引起的。
    检查一下,你插入的各个值和对应的数据库中列的定义大小。查看一下具体是那个列的插入值超过了数据库中定义的大小。
      

  4.   

    是你的数据库版本或者说其所对应的连接驱动包有问题!
    参考下文:
     ORA-01461: can bind a LONG value only for insert into a LONG column
          开发项目,今天又难到问题。junit测试写数据到oracle时,出现:ORA-01461: can bind a LONG value only for insert into a LONG column错误,郁闷,试了几次发现,中文才会有这个问题,而且jsp页面里输入的中文又不会报这个错(前端是struts)。像mysql的话,很有可能是数据库字符编码问题,就怀疑是否为字符编码问题(这种思维不知道会不会很傻),因为项目所有编码都是utf-8, 看了下oracle是zhs16GBK。然后就建一个gbk的项目来测试,结果还是出现此问题。后来就换用旧系统的classes12.jar驱动测试下,^_^, 不会了,太好了。看了下classes12.jar的版本是9.0.2.0.0的而且又是 classes12.jar不爽,后来看到一个帖子,说:用9的和10.2的没有此问题,我回去看下之前出问题的版本是10.1.0.2.0,郁闷,用的数据库是10.2.0.1.0。马上换成10.2.0.1.0的版本。当初不注意,今天花了我几个小时。我一直以为jdbc是数据库对应的。对应的jdbc在oracle安装目录可以找到oracle\product\10.2.0\db_1\jdbc\lib\ojdbc14.jar
      

  5.   

    也有可能是楼上那位说的那种情况。
    你把对应的数据库的启动包放到你的工程中去,试试。
    oracle的启动包是ojdbc14.jar,其他数据库没有使用过。
      

  6.   

    oracle的驱动包是ojdbc14.jar,其他数据库没有使用过。