我在数据库的控制台输入:
update Z01_toot set c_name='你好' where id=20;(更新成功)但是,我在jsp页面中String sql="update Z01_toot set c_name=? where id=?";
ps = con.prepareStatement(sql);
ps.setString(1,"你好");
ps.setInt(2,20);
ps.executeUpdate();
(更新失败)提示:"ORA-01461: 仅能绑定要插入 LONG 列的 LONG 值",把"你好"改成英文就可以的这是为什么~~求教啊

解决方案 »

  1.   

    update Z01_toot set c_name=? where id=?
    参数替换后你的语句就是update Z01_toot set c_name=你好 where id=20
    应该是要update Z01_toot set c_name='你好' where id=20
    引号要是英文的
      

  2.   

    楼主,控制台能够更新中文数据成功,写在java程序中就出错,你的java代码肯定没问题,我觉得应该是oracle的ojdbc驱动问题,替换下相应的jar文件应该就可以了。
      

  3.   


    String sql="update Z01_toot set c_name='?' where id=?";
    这样?提示无效的列索引,问号外不能用引号啊
      

  4.   

    c_name这个字段的长度是多少 还有就是你数据库编码是什么?
      

  5.   


    我查了下"ORA-01461: 仅能绑定要插入 LONG 列的 LONG 值"这个提示,有其中一个原因就是jdbc.jar包不匹配,我也去更新过jar包了,还是查了orcle的版本,然后对应着去下的jar包,问题还是存在的
      

  6.   


    c_name varchar2(20);
    数据库编码:ZHS16GBK咦?貌似是编码问题...但如何解决呢
      

  7.   

    问题就是在编码上吧 UTF-8啊 那是在建数据库时就选了的啊
      

  8.   

    你使用new String方法转下码,和oracle的字符集保持一致,或者是oracle的子集也行
      

  9.   

    name=new String(name.getBytes("ISO8859_1"),"GBK");
      

  10.   


    --我的可以更新的
    String sql="UPDATE jdbc_user SET name=? WHERE ID=?";
    pstm=conn.prepareStatement(sql);
    pstm.setString(1,"你好");
    pstm.setString(2, "1");
    int num=pstm.executeUpdate();------------insert ok 1----------------
    SQL> set linesize 32676
    SQL> select * from jdbc_user;        ID NAME               PASSWORD             PHONE                          
    ---------- ---------- ---------------- -----------------
             1 你好                    12345              22222                          
             2 paddy                12345              22222                          SQL> 
      

  11.   

    我数据库的字符编码是 UTF-8--我的可以更新的
    String sql="UPDATE jdbc_user SET name=? WHERE ID=?";
    pstm=conn.prepareStatement(sql);
    pstm.setString(1,"你好");
    pstm.setString(2, "1");
    int num=pstm.executeUpdate();
    SQL> select * from jdbc_user;        ID NAME               PASSWORD             PHONE                          
    ---------- ---------- ---------------- -----------------
             1 你好                 12345              22222                          
             2 paddy                12345              22222                          SQL> 当修改字符编码为GBK,出现乱码:
    pstm.setString(1,new String("你好".getBytes("ISO8859_1"),"GBK"));SQL> select * from jdbc_user;        ID NAME               PASSWORD             PHONE                          
    ---------- ---------- ---------------- -----------------
             1 ???                  12345              22222                          
             2 paddy                12345              22222                          SQL> 当修改字符编码为ZHS16GBK,java运行错误!
    pstm.setString(1,new String("你好".getBytes("ISO8859_1"),"ZHS16GBK"));java.io.UnsupportedEncodingException: ZHS16GBK
    at sun.io.Converters.getConverterClass(Converters.java:218)
    at sun.io.Converters.newConverter(Converters.java:251)
    at sun.io.ByteToCharConverter.getConverter(ByteToCharConverter.java:68)
    at java.lang.StringCoding.decode(StringCoding.java:224)
    at java.lang.String.<init>(String.java:405)
    at java.lang.String.<init>(String.java:433)
    at org.my.TEST.main(TEST.java:72)
      

  12.   


    我数据库的字符编码是 ZHS16GBKString sql="update Z01_toot set c_name='?' where id=?";
    ps = con.prepareStatement(sql);
    ps.setString(1,new String("你好".getBytes("ISO8859_1"),"ZHS16GBK"));异 常 
    org.apache.jasper.JasperException: Exception in JSP: /test.jsp:26
    26: ps.setString(1,new String("浣犲ソ".getBytes("ISO8859_1"),"ZHS16GBK"));
    .....起 因 
    java.io.UnsupportedEncodingException: ZHS16GBK
    sun.io.Converters.getConverterClass(Converters.java:218)
    sun.io.Converters.newConverter(Converters.java:251)
    sun.io.ByteToCharConverter.getConverter(ByteToCharConverter.java:68)
    java.lang.StringCoding.decode(StringCoding.java:224)
    java.lang.String.<init>(String.java:405)
    java.lang.String.<init>(String.java:433)
    说是不支持这个编码,数据库的编码我又不能改,共用的嘛,现在好纠结~~
      

  13.   

    话说ZHS16GBK就是GBK吗?这个真不知道也,求解