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());
ただし、これでも同じエラーが発生します。
クラスはそこにあります。コンパイルされたコードは構文エラーをスローしませんが、何らかの理由で、ランタイムはそれを見つけることができません。
私は何が欠けていますか?