我正在尝试处理一个 Java 项目,该项目需要查看现有 DB2 AS/400 服务器中的数据,但一直告诉我此错误:
com.ibm.db2.jcc.am.to: [jcc][t4][10379][11959][4.8.87] Client disconnect exception encountered: [jcc][10275][10261]Unsupported ccsid, encoding, or locale: "65535". ERRORCODE=-4499, SQLSTATE=null at com.ibm.db2.jcc.am.gd.a(gd.java:321) at com.ibm.db2.jcc.am.gd.a(gd.java:347) at com.ibm.db2.jcc.t4.fc.e(fc.java:2245) at com.ibm.db2.jcc.t4.fc.e(fc.java:2134) at com.ibm.db2.jcc.t4.db.c(db.java:4439) at com.ibm.db2.jcc.t4.db.b(db.java:4384) at com.ibm.db2.jcc.t4.db.a(db.java:4370) at com.ibm.db2.jcc.t4.eb.oc(eb.java:349) at com.ibm.db2.jcc.t4.fb.o(fb.java:830) at com.ibm.db2.jcc.t4.fb.g(fb.java:143) at com.ibm.db2.jcc.t4.fb.a(fb.java:40) at com.ibm.db2.jcc.t4.t.a(t.java:32) at com.ibm.db2.jcc.t4.ub.i(ub.java:135) at com.ibm.db2.jcc.am.wm.hb(wm.java:1949) at com.ibm.db2.jcc.am.wm.a(wm.java:2968) at com.ibm.db2.jcc.am.wm.a(wm.java:659) at com.ibm.db2.jcc.am.wm.executeQuery(wm.java:643) at Main.main(Main.java:78) Caused by: java.io.UnsupportedEncodingException: [jcc][10275][10261]Unsupported ccsid, encoding, or locale: "65535". at com.ibm.db2.jcc.am.bb.a(bb.java:1125) at com.ibm.db2.jcc.t4.fc.e(fc.java:2242) ... 15 more
These are my libraries:
db2jcc4.jar
db2jcc_license_cisuz.jar
我的代码:
public class Main { public static void main(String[] args) throws UnsupportedEncodingException { try { Class.forName("com.ibm.db2.jcc.DB2Driver"); } catch (ClassNotFoundException e) { e.printStackTrace(); return; } //DB2DataSource System.out.println("DB2 driver is loaded successfully"); Connection conn = null; PreparedStatement pstmt = null; Statement statement = null; ResultSet rset = null; boolean found = false; try { Properties properties = new Properties(); properties.put("user", "USER"); // Set user ID for connection properties.put("password", "password"); // Set password for connection String url = "jdbc:db2://myserver:446/mydb"; conn = DriverManager.getConnection(url, properties); if (conn != null) { System.out.println("DB2 Database Connected"); } else { System.out.println("Db2 connection Failed "); } String sql = "SELECT * FROM ZIPFILES.POLHDR;"; statement = conn.createStatement(); rset = statement.executeQuery(sql); } catch (SQLException e) { System.out.println("DB2 Database connection Failed"); e.printStackTrace(); return; } } }
additional info:
the error is pointing at this line
rset = statement.executeQuery(sql);
DB2 AS/400 版本是 V4R4
- 表的编码是 CCSID 37,但我尝试将所有内容更改为该编码(例如 CP037、IBM037),但没有成功!我也尝试循环所有可能的编码(哈哈),但仍然没有运气!
最佳答案
根据错误消息,文件编码似乎是65535(即二进制数据),而不是37。
尝试将以下属性附加到连接字符串:translate binary=true;ccsid=37;
。
关于java - 通过 JDBC 进行 DB2 AS/400 查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29507161/