gpt4 book ai didi

java - 通过 JDBC 查询 DB2 AS/400?

转载 作者:行者123 更新时间:2023-11-30 08:54:13 24 4
gpt4 key购买 nike

我正在尝试处理一个需要从现有 DB2 AS/400 服务器查看数据的 Java 项目,但一直告诉我这个错误:

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:

  1. the error is pointing at this line

    rset = statement.executeQuery(sql);
  2. DB2 AS/400 版本为 V4R4

  3. 表的编码是 CCSID 37,但我尝试将所有内容更改为该编码(例如 CP037、IBM037),但没有成功!我也试过循环所有可能的编码(哈哈),但还是不行!

最佳答案

根据错误信息,文件编码似乎是65535(即二进制数据),而不是37。

尝试将以下属性附加到连接字符串:translate binary=true;ccsid=37;

关于java - 通过 JDBC 查询 DB2 AS/400?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29507161/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com