java - JDBC:通过 "SQLException: I/O Error: Connection reset caused"捕获 "SocketException: Connection reset"

标签 java sql jdbc

我的代码建立 JDBC 连接并重复查询 Microsoft SQL SMS。但是,有时我会收到错误:

"Exception in thread "main" java.sql.SQLException: I/O Error: Connection reset" followed by "Caused by: java.net.SocketException: Connection reset" enter image description here

这是我的代码:

public static void main(String[] args){
    ...
    // Establish JDBC connection
    Class.forName(DRIVER);
    Connection conn = DriverManager.getConnection(URL, USER, PASS);
    Statement stmt = conn.createStatement(); 
    ...
    // Perform SQL query
    for(int i=0; i<size; i++)
        functionA(stmt); // <--line 62
    ...
}

public static void functionA(Statement stmt){
    String aql = "INSERT INTO...";
    stmt.executeUpdate(sql); // <-- line 105
}

我查询数据库是为了测试一些与数据无关的功能。因此,我希望我的程序在引发异常时自动重新建立连接,以便我可以让它自行运行。

我的问题是: 1)我可以在try...catch中重新建立JDBC连接吗? 2)如果是这样,要捕获哪个异常以及在哪里捕获它? 3)我应该在catch中放置什么?

最佳答案

如果您想捕获问题中列出的异常,则需要捕获 SQLException,例如:

  // Perform SQL query
    for(int i=0; i<size; i++) {
        try {
        functionA(stmt); // <--line 62
        } catch(SQLException e) {
          System.out.println(e.getMessage());
          //You can add here your recovery logic ...
        }
    }

是的,您可以在异常发生后尝试重新建立连接,在 catch block 中放置一种重新连接机制......

如果您想检查导致 SQLException 的内部异常,您可以使用 getCause() 进行检查:

        } catch(SQLException e) {
          if(e.getCause() instanceof SocketException) {
          //You can add here your recovery logic ...
          }
        }

关于java - JDBC:通过 "SQLException: I/O Error: Connection reset caused"捕获 "SocketException: Connection reset",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36353428/

相关文章:

java - 如何使用 Jackson 映射动态 json 属性名称以进行 Spring Rest 模板请求

java - Hazelcast如何获取当前所有锁?

java - 将 RecyclerView 代码直接从 Activity 移动到 Fragment,这些错误是什么意思?

Mysql创建 View 并逐渐增加日期时间字段

java - 编辑外部存储中的文件

php - 将多个php代码条件转换为SQL命令

mysql - 如何将表格从 1 行多列重组为多行少列?

java - JDBC:使用流从远程 MySQL 数据库导出/导入 CSV 原始数据(SELECT INTO OUTFILE/LOAD DATA INFILE)

java.sql.SQLException : Listener refused the connection with the following error: ORA-12519, TNS:找不到合适的服务处理程序

java - Java MySQL 连接错误