4

JDBCドライバーをロードして、AS400に対していくつかのSQL呼び出しを行おうとしています。JDBCがインストールされているコンピューターで接続を実行しようとしましたが、URLとSQLの呼び出しは正常に機能します。

ドライバーがインストールされていないアプリ(現在はAndroid用ですが、デスクトップアプリケーションへの拡張を検討しています)を開発する必要があります。私はエミュレータではなく実際のAndroidデバイスでコードをテストしているので、完全なインターネット権限があります。

jt400のドライバーは、IBMが指摘しているように、com.ibm.as400.access.AS400JDBCDriverにあります。

これは私のコードです:

    try {

        Class.forName("com.ibm.as400.access.AS400JDBCDriver").newInstance();
        Connection conn = DriverManager.getConnection(
                url + schema + ";naming=sql;errors=full",
                uname,
                psswrd);

        // do SQL query stuff

        rs.close();
        stmt.close();
        conn.close();

    } 
    catch (ClassNotFoundException e)
    {
        this.basicOutput.setText("Class not found: " + e.getMessage());
        System.out.println(e.getStackTrace());
    }
    //catch (SQLException e)
    catch (Exception e)  //need generic to catch all errors thrown
    {

        this.basicOutput.setText(e.getMessage());
        System.out.println(e.getStackTrace());

    }

これを実行すると、「クラスが見つかりません:com.ibm.as400.access.AS400JDBCDriver」が表示されます。

私はいくつかの調査を行いましたが、Class.forNameは適切な方法ではないことを示唆しています。だから私もこれを試しました:

        DriverManager.registerDriver(new com.ibm.as400.access.AS400JDBCDriver());

ただし、これでも同じエラーが発生します。

クラスはそこにあります。コンパイルされたコードは構文エラーをスローしませんが、何らかの理由で、ランタイムはそれを見つけることができません。

私は何が欠けていますか?

4

2 に答える 2

0

ドライバーは、プロジェクトに jar として含める必要があります。既に持っている場合は、プロジェクトのフォルダー /libs に追加します。

ドライバー クラスを文字列リテラルとして指定するため、コンパイル時にそれが通過し、すべて問題ないと考えます。ただし、実行時にそれを見つける必要があり、jar を含めていないため、見つけることができません。

于 2013-03-14T20:30:10.703 に答える
0

使用しようとしているライブラリーの代わりに、Android で使用するために特別に設計された IBM の JTOpen Lite/JTLite ライブラリーを使用することをお勧めします。

詳細については、関連する質問に対する私の回答を参照してください。

于 2013-03-21T04:18:09.210 に答える