当前位置: 首页 > 知识库问答 >
问题:

通过JDBC查询DB2 AS/400?

韩耘豪
2023-03-14

我试图处理一个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

这些是我的库:

 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;
            }
        }
    }

其他信息:

>

  • 错误指向此行

    rset = statement.executeQuery(sql);
    

    DB2 AS/400版本为V4R4

  • 共有1个答案

    魏风华
    2023-03-14

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

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

     类似资料:
    • 问题内容: 假设我在Access中具有以下信息的表格: 我的问题是,如何将第二列中的值连接到基于第一列的行值。我想要的查询结果如下: 我想通过查询来实现。有人可以帮我实现吗? 问题答案: 使用数据的示例:

    • 我正在尝试通过以下步骤通过 spark-1.6.0 和 scala-2.11.7 从 Cassandra 2.0.17 表中获取值 已启动cassandra--服务cassandr启动 已启动spark--sbin/start all。sh 规定的火花标度-箱/火花壳-罐子火花-盒-连接器_2.10-1.5.0-M1.jar 在 Scala 中执行了这些命令 直到现在一切都很好,但当我执行- 它给

    • 我有3个型号:汽车、经销商和省 雄辩的关系如下: 车辆物品至经销商 经销商有很多车辆 该省有许多经销商 经销商所属省份 该省有许多越野车 我想得到一个特定省份的所有车辆,但我的代码需要从车辆型号开始调用,因为我调用了许多车辆过滤器。 我的代码: 不幸的是,我得到了一个错误 未找到列:“where子句”中的1054个未知列“经销商.省id”(SQL:select*from存在的位置(select*f

    • 我想检索Order对象的列表。每个Order对象可能都有一个OrderRows列表。OrderRows保存在单独的表中。如何将下面的查询与Jdbctemplate一起使用?

    • 我正在使用JDBC尝试从以下表中选择: 我想检查是否存在具有特定login和PASSWORDMD5值的行,如下所示: 但当我调用时,我会得到以下错误: com.mysql.jdbc.exceptions.jdbc4.mysqlsyntaxerrorexception:sun.reflect.nativeConstructorAccessorImpl.newInstance(nativeConstr

    • 我正在使用JDBC创建一个数据库,其中包含表和。两者都有一个名为 以下是我创建和填充表的SQL语句: 我试图运行以下查询: 或 或 使用 但是我没有得到任何结果。 这两个问题都可以解决。 SQLite数据库服务器显示相同的问题: 它与Firefox中的SQLite Manager一起工作。