我的应用程序使用以下配置运行 TOMCAT - 6.0.18 数据库 - Oracle 11g企业版(11.2.0.2.0) Java版本 - jdk 1.6 JDBC驱动程序 - OJDBC14.jar(不确定确切版本)
当我将Oracle Array类型值从java传递到Stored过程时,我收到了Oracle-Character-set-178错误。找到以下错误消息。
java.sql.SQLException:不支持的字符集:oracle-character-set-178
以下是我正在执行的代码
String query = "{call DBA.SP_XXXX(?,?,?)}";
con = this.getConnection();
con=((DelegatingConnection) con).getInnermostDelegate();
oracle.sql.ArrayDescriptor descrip =oracle.sql.ArrayDescriptor.createDescriptor("DBA.ARRAY_TABLE", con);
oracle.sql.ARRAY oracArray = new oracle.sql.ARRAY(descrip, con, arrayValue);
cs = con.prepareCall(query);
cs.setString(1,ID);
cs.registerOutParameter(2, java.sql.Types.VARCHAR);
cs.setObject(3,oracArray);
cs.execute();
以下是我的oracle返回的字符集值
NLS_CHARACTERSET WE8MSWIN1252 NLS_NCHAR_CHARACTERSET AL16UTF16
我不确定OJDBC14.jar的确切版本是否在我当前的设置中运行但是当我尝试更换最新的OJDBC14并获得以下错误 java.lang.NoSuchMethodError:oracle.i18n.text.converter.CharacterConverterOGS.getInstance(I)Loracle / sql / converter / CharacterConverters;
请告诉我问题和解决方案
答案 0 :(得分:1)
解决了以下解决方案的问题:将ojdbc14.jar替换为ojdbc6.jar&的精确版本。 orai18n.jar支持我的oracle 11.2.0.2。
答案 1 :(得分:0)
有同样的错误!
我使用的是 spring,所以如果你也这样做了,它会用 add the orai18n.jar to classpath
之类的东西引导你进入错误,这就是你应该做的,但是如果你使用了并且错误坚持出现,mkdir一个 lib 目录到你的根目录,并用你选择的版本的 oracle jars 填充它,并使用 maven 插件在你的编译中包含 jars。
任何 jar 都应该由编译范围提供,这样你就不会出现生产错误。