0

mdbデータベースファイルに接続するJavaプログラムがあります。Eclipseでは正常に動作します。次に、プログラムをjarファイルとしてエクスポートします。今すぐプログラムを起動して同じファイルにアクセスしたい場合、メッセージが表示されます

データソース名が見つからず、デフォルトのドライバーが指定されていません。

データベースをWindowsでODBCソースとしてすでに登録していますが、機能しません。データベースへのパスは、Eclipseとjarで同じです。たぶん、jar内から外部ソースにアクセスする際の問題はありますか?助言がありますか?

protected static Connection getAccessConnection(String fullPath)
  throws ClassNotFoundException, SQLException 
  {
    String driver = "sun.jdbc.odbc.JdbcOdbcDriver";
    Class.forName(driver);      
    String url = "jdbc:odbc:Driver="
         + "{Microsoft Access Driver (*.mdb)};"
         + "DBQ="
         + fullPath.replace("\\", "/");
    String username = "";
    String password = "";
    Connection result =
        DriverManager.getConnection(url, username, password);
    return result;
  }
4

1 に答える 1

0

異なるバージョンのJavaを使用しているようです。モードでは64ビット.jar、Eclipseモードでは32ビットです。これは、ProcessExpliorerまたは他の同様のツールを使用して確認できます。によると:http ://www.selikoff.net/2011/07/26/connecting-to-ms-access-file-via-jdbc-in-64-bit-java/

アクセスデータベースへの接続文字列は、32ビット環境と64ビット環境で異なるようです。32ビットでは、次のものを使用できます。

jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};...

64ビットの場合:

jdbc:odbc:Driver={Microsoft Access Driver (*.mdb, *.accdb)};...

両方を試して、最初にその作業を使用できると思います(両方が機能しない場合は例外をスローします)。このようにして、アプリケーションは32ビットと64ビットの両方のJREで動作できるようになります。

.jarEclipseと:の両方で同じJREを使用する場合

ODBCアドミニストレータには、「トレース」タブがあります。トレースを有効にして、Eclipseからアプリケーションを実行します。このトレースログを保存してから、.jarアプリケーションからトレースログを作成します。両方のトレースを比較します。

于 2012-05-21T08:20:48.867 に答える