2

私のアプリの背後にあるアイデアは、.mdb ファイル全体をクライアント側にダウンロードし、クライアントによって行われた変更を記録し、それらの変更をクライアントごとに 1 日 1 回アップロードすることにより、クライアントがデータベース (.mdb 形式) に直接アクセスするのを禁止することです。私が抱えている問題は、ucanaccess を使用しているときに、getDatabase2() が呼び出されるたびにデータベース全体をロードしているように見えることです。コンソールでは、アプリが読み込まれるまで無限に取得できます。(そしてそれにはかなりの時間がかかります)。ucanaccess にブリッジ処理のみ (トランザクションのみ) を実行させる方法はありますか? または多分私は間違ったアプローチを使用しています?? .mdb ファイルのサイズは 50Mo で、最大 80 ~ 100k のエントリがあります。Windows XP、Eclipse、Java 7 を使用しています。getDataBase のコードは次のとおりです。

private static Connection getDatabase2() throws Exception{


    String url="jdbc:ucanaccess:////Jv1kbafap001/teams/Medic/database.mdb;memory=false";
    String user="admin";
    String pass="";
    return DriverManager.getConnection(url,user,pass);
}
4

1 に答える 1

2

次の ucanaccess バージョン (2.0.9.1) では、特に memory=false の場合のロード時間 (最初の接続の時間) が大幅に短縮されます。部分的な読み込みをサポートすることは私の計画外です。これに対する解決策が既にあると思うからです。トランザクションに必要なテーブルのみを指す別の「フィルター」mdb を使用し、それらを外部リソースとしてリンクするだけです (つまり、リンクされたテーブルとして使用する必要があります)。remap 接続パラメーターを使用して、元の外部データベース パスをオーバーライドできることに注意してください。

于 2014-09-29T10:57:42.053 に答える