我在数据库的控制台输入:
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 值",把"你好"改成英文就可以的这是为什么~~求教啊
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 值",把"你好"改成英文就可以的这是为什么~~求教啊
参数替换后你的语句就是update Z01_toot set c_name=你好 where id=20
应该是要update Z01_toot set c_name='你好' where id=20
引号要是英文的
String sql="update Z01_toot set c_name='?' where id=?";
这样?提示无效的列索引,问号外不能用引号啊
我查了下"ORA-01461: 仅能绑定要插入 LONG 列的 LONG 值"这个提示,有其中一个原因就是jdbc.jar包不匹配,我也去更新过jar包了,还是查了orcle的版本,然后对应着去下的jar包,问题还是存在的
c_name varchar2(20);
数据库编码:ZHS16GBK咦?貌似是编码问题...但如何解决呢
--我的可以更新的
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>
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)
我数据库的字符编码是 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)
说是不支持这个编码,数据库的编码我又不能改,共用的嘛,现在好纠结~~