2012-01-11 12 views
11

「システムリソースが超過しました」という記事はすべて読んだことがありますが、 私は過去3時間をソリューションの検索に費やしました。 私は多くの接続/ステートメント/結果セットを持っていませんし、私はいつもそれらをすべて閉じます。 私のコードは動作していましたが、クエリではなく「システムリソースが超過しました」という例外が発生しましたが、私は接続しようとするとです。 私はコードから変更しませんでしたが、現時点では動作しませんが、10回のうち1回は試してみます。私はその中でいくつかのことを変えようとしましたが、違いはありません。 マイ・アクセス・ファイルは15〜50MBです。 私のコードは次のとおりです。Java jdbc odbc経由でアクセスファイルに接続中に「システムリソースが超過しました」

private String accessFilePath; 
private Connection myConnection; 
public boolean connectToAccess(String myAccessFilePath) { 
    accessFilePath = myAccessFilePath; 
    //Get connection to database 
    try { 
     Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); 
     // set properties for unicode 
     Properties myProperties = new Properties(); 
     myProperties.put("charSet", "windows-1253"); 
     myConnection = DriverManager.getConnection("jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ=" + accessFilePath, myProperties); // I get the exception here 
    } catch (Exception ex) { 
     System.out.println("Failed to connect to " + accessFilePath + " database\n" + ex.getMessage()); 
     return false; 
    } 
    return true; 
} 

今、他の時間は異なるとは何ですか?アクセスファイルは以前の接続を開いたままにしますか?ここで何が間違っていますか?

+1

オペレーティングシステムを再起動してみましたか?おそらく、接続を閉じることができなかったあなたのプログラムの中断された実行のために、接続関連のリソースの一部が割り当て解除されていないことがあります。 –

+0

私はすでに再起動を試みました。それは私の最初の考えでした。私は非常に新鮮な再起動後、私は最初の接続の試行中に例外を取得することが奇妙なことがわかります。それは狂っている...私はまた、さまざまなAccessファイルの同じ例外を取得 –

+1

うわー、それは奇妙です。試みるべき次のこと:これらのファイルにADOを使ってC#またはVBからアクセスできますか? –

答えて

6

OK、解決策が見つかりました。 最初は新しいJavaプロジェクトを開始し、そこに同じコードラインをコピーしました。 新しいプロジェクトで試してみるたびに、ファイルに正常に接続しました。 それは私を打つ。私は私のVM設定を見ました。 私の元のプログラムで私は仮想マシンにたくさんのメモリを割り当てましたそのため、ファイルへの単一の接続でもメモリが残っていませんでした。

私の設定はなかった - > VMオプション: - :-Xmx512m -Xms256m

をそして、それは働いていた> VMオプション-Xmx1536m -Xms768m(少し過大)

私はそれを変更しました。コメントしてくださってありがとうございます。 私はこれが他の人に役立つことを願っています。

関連する問題