Java 处理由网络波动引起的读取超时
我有一个java应用程序,它从sql 2008数据库中读取记录(要读取的记录数是可配置的)。 并处理它们,这是在一个无限循环中完成的,只有当应用程序手动停止时才会停止 我在这里面临的问题是,当我遇到读取超时错误时,应用程序停止从数据库中获取记录。 我猜这是因为网络的波动 从数据库读取的代码写在try-catch块中。因此,当错误发生时,它会被记录,但也会停止。 我不知道如何处理这种情况,并使应用程序连续运行,尽管有错误。Java 处理由网络波动引起的读取超时,java,networking,Java,Networking,我有一个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 */ }
}
}
保存光标怎么样?如果调用了catch块代码,请从光标位置重新运行该函数?如果您添加更多代码,答案可能会有所改进:)@sonu如果我的解决方案解决了您的问题,请将其标记为正确(钩子在答案的左侧)。如果没有,请自己发布正确答案。