处理由网络波动引起的读取超时

时间:2013-09-23 12:38:23

标签: java networking

我有一个java应用程序,它从sql 2008数据库中读取记录(b读取的记录数是可配置的)。 并处理它们,这是在无限循环中完成的,只有在手动停止应用程序时才会停止。

我面临的问题是当我收到Read Time out错误时应用程序停止从数据库中提取记录。 我猜这是因为网络波动。

从db读取的代码是在try catch block.so中编写的。当错误发生时,它会被记录但也会停止。 我不知道如何处理这种情况,并使应用程序连续运行,尽管有错误。 请让我知道如何处理错误,以便我的应用程序继续运行。

1 个答案:

答案 0 :(得分: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 */ }
    }
}