2012-03-02 21 views
5

32ビットJVMを使用してコンパイルすると問題なく動作しますが、64ビットJVMを使用しようとすると問題が発生します。私が得ているメッセージは、"[Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified"です。Java 64ビットJDBC-ODBCドライバの問題

私は、次のようなコードを使用してExcelとSQL Serverデータベースに接続しようとしている:私はドライバマネージャをチェックしようとしたとき

String file = directory + "/fileName.xlsm"; 

String connectStr= "jdbc:odbc:DRIVER={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};DBQ=" + file + ";READONLY=false"; 

try { 
    Class.forName(getDriver()); 
    gConnection = DriverManager.getConnection(connectStr); 
    //do stuff with connection 
} 

ドライバーの64ビットバージョンを持っていないようでした。これを簡単に修正し、コンピュータ上の設定を手動で変更することなく64ビットドライバを使用して接続できるようにする(このプログラムは複数のコンピュータに分散されるため、これまでのコンピュータ用にドライバを個別にダウンロードする必要はありません。それを実行したい)?また、64ビットドライバを使用して接続する方が効率的か、32ビットのものは良い/高速である(私は非常に大きなデータセットを持っているので、小さな違いが違いになるでしょう)?

+0

どのExcelのバージョンですか? Office 2010以前はドライバは32ビットのみでした。 – vulkanino

+0

ああ、申し訳ありません。それは2010年です。また、MS Officeは32ビットですが、64ビットドライバを使用することは可能ですか? – scaevity

+0

これを試してみてください。http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=13255#Overview – vulkanino

答えて

1

64ビットアプリケーションは32ビットODBCドライバを使用できません。その逆もあります。そのため、そのエラーメッセージが表示されます。 32ビット(C:\ Windows \ SysWow64 \ odbcad32.exe)および64ビット(C:\ Windows \ System32 \ odbcad32.exe)ODBCデータソース管理者(ドライバタブ)を実行すると、もちろん、64ビットシステム上で動作します。命名は最初は混乱しています。

Access/Excel ODBCドライバは32ビットのみで、64ビットで実行するとExcelまたはAccessデータベースファイルを開く処理ができませんでした。我々は最終的にExcelと他のOfficeドキュメントを直接読み書きできるJavaライブラリであるApache POI libraryを使用するように切り替えました。これを試してみることをお勧めしますが、切り替えには多少の作業が必要です。

当時、Office 2010はまだリリースされていませんでした。私はOffice 2010で64ビットのODBCドライバを作成したことに気付きませんでしたが、これが合法的なオプションかどうかを確認する必要があります。たとえJavaアプリケーションでODBCを使用するのが好きでないとしても。

関連する問題