一部のコードを更新しようとしているときに、非常に厄介な問題に遭遇しました。問題のコードは、ローカルの MS アクセス ファイル (*.mdb) からいくつかの (実際には多くの) 情報を読み取り、このデータに対していくつかの操作を実行します (単純なものです)。私はデータベースを読むだけでよいことに注意してください。
問題は、このプログラムを x64 オペレーティング システム (主に win7) で動作するように展開しようとしているのに、32 ビット ODBC ドライバーにアクセスできないことです。
これは、データベースにアクセスするコードの一部です。変数「パス」は、mdb ファイルへの絶対パスを含む文字列です。前述のとおり、このファイルはローカルです。
public void openConection()
{
try
{
Properties props = new Properties();
props.put ("charSet", "ISO-8859-1");
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
String dbURL = "jdbc:odbc:Driver={Microsoft AccessDriver (*.mdb)};DBQ=";
dbURL += this.path + ";DriverID=22;READONLY=false)";
this.connection = DriverManager.getConnection("jdbc:odbc:Driver={Microsoft AccessDriver (*.mdb)};DBQ=" + this.path, props);
this.statement = this.connection.createStatement();
System.out.println("Success");
}catch(Exception e)
{
System.out.println("Error :" + e);
}
}
これにより、次のエラーがスローされます。
[Microsoft][ODBC Driver Manager] データ ソース名が見つからず、既定のドライバーが指定されていません
問題は(私が知る限り)次のコードにあります。
("jdbc:odbc:Driver={Microsoft AccessDriver (*.mdb)};DBQ=" + this.path, props
私が正しければ、これは Java jdbc を MS Access ODBC にブリッジしようとします。これは 32 ビット ドライバーであり、プログラムからアクセスできません。私は自分の問題をグーグルで検索しようとしましたが、役立つものは何も見つかりませんでした。64 ビットの MS Access ドライバーは見つかりましたが、32 ビット バージョンの Office をアンインストールする必要がありました。
また、このプログラムは、その方法を知らない多くの人に提供する必要があるため、DSN を作成する必要は避けたいと思います。
ありがとう。
ゼグピ