我有一个 java 应用程序,它从 sql 2008 数据库中读取记录(要读取的记录数是可配置的)。并处理它们,这是在无限循环中完成的,只有在手动停止应用程序时才会停止。
我在这里面临的问题是,当我收到读取超时错误时,应用程序会停止从数据库中获取记录。我猜这是因为网络波动。
从数据库读取的代码写在 try catch 块中。因此,当错误发生时,它会被记录下来,但也会停止。尽管出现错误,我不知道如何处理这种情况并使应用程序持续运行。请让我知道如何处理该错误以使我的应用程序继续运行。
我有一个 java 应用程序,它从 sql 2008 数据库中读取记录(要读取的记录数是可配置的)。并处理它们,这是在无限循环中完成的,只有在手动停止应用程序时才会停止。
我在这里面临的问题是,当我收到读取超时错误时,应用程序会停止从数据库中获取记录。我猜这是因为网络波动。
从数据库读取的代码写在 try catch 块中。因此,当错误发生时,它会被记录下来,但也会停止。尽管出现错误,我不知道如何处理这种情况并使应用程序持续运行。请让我知道如何处理该错误以使我的应用程序继续运行。
在阅读时,您应该存储有关您停止的位置的信息,并在连接失败后重新设置连接。
像这样:
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 */ }
}
}