我用jdbc连接oracle数据库,使用preparedStatement时,如果sql语句中有中文
比如 String sql = "select * from users where name=?";
String name = "张三";
preparedStatement pst = conn.prepareStatement(sql);
pst.setString(1, name);
pst.executeQuery();
会报ORA-01460: unimplemented or unreasonable conversion requested
如果用英文就没错 //name = "zhangsan";
但是用statement时,也可以有中文
String sql = "select * from users where name=+'" + name +"'";这样也没问题 可以有中文
我的jdk是1.7的 驱动包名叫class12.jar
我在别人的机器上试没问题··他的jdk是1.6的 以前都没发现这个问题 纠结啊

解决方案 »

  1.   

    把客户端的charset改为AMERICAN_AMERICA.ZHS16CGB231280
      

  2.   


    重装了oracle 字符集选UTF-8 没有这个问题了,但是还是不理解,就算我按默认安装 默认字符集是GB2312 为什么反而输中文有问题?我的Eclipse文件编码也是gbk啊··真是搞不懂
      

  3.   


    重装了oracle 字符集选UTF-8 没有这个问题了,但是还是不理解,就算我按默认安装 默认字符集是GB2312 为什么反而输中文有问题?我的Eclipse文件编码也是gbk啊··真是搞不懂这个可能要参考1#的做法,如果你的机器装了oracle客户端也许会有影响,要检查下客户端的设置。
      

  4.   


    重装了oracle 字符集选UTF-8 没有这个问题了,但是还是不理解,就算我按默认安装 默认字符集是GB2312 为什么反而输中文有问题?我的Eclipse文件编码也是gbk啊··真是搞不懂这个可能要参考1#的做法,如果你的机器装了oracle客户端也许会有影响,要检查下客户端的设置。

    好吧 不管怎么样,问题解决了··分给你把