java.sql.SQLException: 不支持的字符集:oracle-character-set-178
java.sql.SQLException: Non supported character set: oracle-character-set-178
我的应用程序运行 以下配置
TOMCAT - 6.0.18
数据库-Oracle 11g企业版(11.2.0.2.0)
Java 版本 - jdk 1.6
JDBC 驱动程序 - OJDBC14.jar(不确定确切版本)
当我将 Oracle 数组类型值从 java 传递到存储过程时,出现 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的字符集值returns
参数值
NLS_CHARACTERSETWE8MSWIN1252
NLS_NCHAR_CHARACTERSET AL16UTF16
我不确定 OJDBC14.jar 的确切版本在我当前的设置中是 运行 但是当我尝试用最新的 OJDBC14 替换时出现以下错误
java.lang.NoSuchMethodError: 甲骨文.i18n.text.converter.CharacterConverterOGS.getInstance(I)Loracle/sql/converter/CharacterConverters;
请告诉我问题所在和解决方案
使用以下解决方案解决了我的问题:将 ojdbc14.jar 替换为支持我的 oracle 11.2.0.2 的 ojdbc6.jar 和 orai18n.jar 的确切版本。
同样的错误!
我用的是 spring,所以如果你也这样做,它会用 add the orai18n.jar to classpath
之类的东西引导你进入错误,这就是你应该做的,但如果你这样做了,错误是坚持要出现,mkdir 一个 lib 目录到你的根目录,并用你选择的版本的 oracle jar 填充它,并使用 maven 插件在你的编译中包含 jars。
任何 jar 都应该由编译范围提供,这样你就不会出现生产错误。
add this dependency:
<dependency>
<groupId>com.oracle.ojdbc</groupId>
<artifactId>orai18n</artifactId>
<version>19.3.0.0</version>
</dependency>
我的应用程序运行 以下配置 TOMCAT - 6.0.18 数据库-Oracle 11g企业版(11.2.0.2.0) Java 版本 - jdk 1.6 JDBC 驱动程序 - OJDBC14.jar(不确定确切版本)
当我将 Oracle 数组类型值从 java 传递到存储过程时,出现 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的字符集值returns
参数值
NLS_CHARACTERSETWE8MSWIN1252 NLS_NCHAR_CHARACTERSET AL16UTF16
我不确定 OJDBC14.jar 的确切版本在我当前的设置中是 运行 但是当我尝试用最新的 OJDBC14 替换时出现以下错误 java.lang.NoSuchMethodError: 甲骨文.i18n.text.converter.CharacterConverterOGS.getInstance(I)Loracle/sql/converter/CharacterConverters;
请告诉我问题所在和解决方案
使用以下解决方案解决了我的问题:将 ojdbc14.jar 替换为支持我的 oracle 11.2.0.2 的 ojdbc6.jar 和 orai18n.jar 的确切版本。
同样的错误!
我用的是 spring,所以如果你也这样做,它会用 add the orai18n.jar to classpath
之类的东西引导你进入错误,这就是你应该做的,但如果你这样做了,错误是坚持要出现,mkdir 一个 lib 目录到你的根目录,并用你选择的版本的 oracle jar 填充它,并使用 maven 插件在你的编译中包含 jars。
任何 jar 都应该由编译范围提供,这样你就不会出现生产错误。
add this dependency:
<dependency>
<groupId>com.oracle.ojdbc</groupId>
<artifactId>orai18n</artifactId>
<version>19.3.0.0</version>
</dependency>