java.sql.SQLException:不支持的字符集:oracle-character-set-178

时间:2016-04-21 16:22:14

标签: arrays oracle11g tomcat6 ojdbc oracle-type

我的应用程序使用以下配置运行 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返回的字符集值

PARAMETER VALUE

NLS_CHARACTERSET WE8MSWIN1252 NLS_NCHAR_CHARACTERSET AL16UTF16

我不确定OJDBC14.jar的确切版本是否在我当前的设置中运行但是当我尝试更换最新的OJDBC14并获得以下错误 java.lang.NoSuchMethodError:oracle.i18n.text.converter.CharacterConverterOGS.getInstance(I)Loracle / sql / converter / CharacterConverters;

请告诉我问题和解决方案

2 个答案:

答案 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 都应该由编译范围提供,这样你就不会出现生产错误。