java - 使用 DB2 驱动程序访问 as400

标签 java db2 ibm-midrange classnotfoundexception

我对 SQL 比较陌生,在连接到 AS/400 DB2 数据库时遇到一些问题。

我已经成功地连接到 MySQL、Microsoft SQL Server 和 Netezza 数据库,但没有遇到太多问题,但我无法连接到此数据库!

我不断收到以下错误:

Java.lang.ClassNotFoundException

我已经尝试过jt400db2jcc驱动程序,并尝试了 com.ibm.db2.jcc.DB2Driver 的 class.forName和com.ibm.as400.access.AS400JDBCDriver ,但两者的结合没有任何帮助。

示例是:

public Connection startMyRexConnection() {
        Connection connect = null;
        ConfigReader.main();
        try {
            Class.forName("com.ibm.db2.jcc.DB2Driver");
            connect = DriverManager.getConnection(ConfigReader.getREXurl(), ConfigReader.getREXuser(), ConfigReader.getREXpassword());
        }
        catch (ClassNotFoundException e) {
            System.err.println("Failed to load DB2 driver");
            System.err.println(e);
        } 
        catch (SQLException ex) {
            System.err.println("SQLException: " + ex.getMessage());
            System.err.println("SQLState: " + ex.getSQLState());
            System.err.println("VendorError: " + ex.getErrorCode());
            System.err.println("Driver loaded, but cannot connect to db: " + ConfigReader.getREXurl());
        } 
        catch (Exception ex) {
            System.err.println("Check classpath. Cannot load db driver: " + "com.ibm.db2.jdbc.app.DB2Driver");
        }
        rexCon = connect;
        return connect;
    }

如有任何建议,我们将不胜感激!

编辑: 这是 e.printStackTrace() 的输出; :

java.lang.ClassNotFoundException: com.ibm.db2.jcc.DB2Driver
java.lang.ClassNotFoundException: com.ibm.db2.jcc.DB2Driver
    at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1365)
    at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1188)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:264)
    at com.vat.ui.RexConnection.startMyRexConnection(RexConnection.java:26)
    at org.apache.jsp.loginRequestHandler_jsp._jspService(loginRequestHandler_jsp.java:143)
    at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)

最佳答案

IBM i 的正确驱动程序是 jt400 驱动程序,并且连接字符串很简单:

jdbc:as400://<host>;

您有正确的类名:

com.ibm.as400.access.AS400JDBCDriver

关于java - 使用 DB2 驱动程序访问 as400,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59714621/

相关文章:

sql - 如何在 DB2 中查找表的主键的名称和值

sql - AS400 SQL查询类似于原生AS400中的CLRLIB(清库)

Windows 上的 PHP -> AS400 有简单的方法吗?

java - Android前台服务onStartCommand不调用,仅onCreate调用

java - 有没有办法连续调用 Java 运行时? (不退出 Java 运行时)

java - Java 代码中缓冲区中出现意外值

java - 将 Spring Boot 1.3.2 升级到 1.4.1 后,Hibernate hbm2ddl (ddl-auto) 失败

database - Bluemix 本地 : How do I add an existing on-prem DB2 database as service?

database - Db2 系列在重复键上插入

Node.js 管理与 DB2 数据库的通信