1

SQL 2008 データベースからレコードを読み取る Java アプリケーションを使用しています (読み取るレコードの数は構成可能です)。そしてそれらを処理すると、これは無限ループで行われ、アプリケーションが手動で停止されたときにのみ停止します。

ここで直面している問題は、読み取りタイムアウト エラーが発生したときに、アプリケーションがデータベースからのレコードのフェッチを停止することです。そして、これはネットワークの変動によるものだと思います。

データベースから読み取るためのコードは try catch block.so に記述されているため、エラーが発生するとログに記録されますが停止します。このような状況を処理し、エラーにもかかわらずアプリケーションを継続的に実行する方法がわかりません。アプリケーションが引き続き実行されるようにエラーを処理する方法を教えてください。

4

1 に答える 1

0

読んでいる間、停止した場所に関する情報を保存し、続行に失敗した後に接続を再度設定する必要があります。

このような:

boolean programRuns = true; // set this to false at the end

public void doMyStuff() {
    int myLastPosition = 0;
    while(programRuns) {
         try {
             Connection con = /* open your connection */
             String statement = /* your statement */ + "WHERE id > " + myLastPosition;
             PreparedStatement pstmt = /* prepare your statement */
             while(true) {
                 ResultSet rs = pstmt.executeQuery();
                 myLastPosition = rs.getInt("id");
                 /* do whatever you want with the result */
             }
         } catch (Exception ex) { /* handle the exception */ }
    }
}
于 2013-09-23T12:56:41.173 に答える