我正在阅读 DBUtils 的更新方法。据我了解,sql查询运行后应该关闭dataSource的连接。但是我发现了几个 update 方法的实现,它们将 false 作为 closeConn 参数传递。谁能告诉我这是为什么?
public int update(Connection conn, String sql, Object... params) throws SQLException {
return update(conn, false, sql, params);
}
public int update(String sql) throws SQLException {
Connection conn = this.prepareConnection();
return this.update(conn, true, sql, (Object[]) null);
}
private int update(Connection conn, boolean closeConn, String sql, Object... params) throws SQLException {
if (conn == null) {
throw new SQLException("Null connection");
}
if (sql == null) {
if (closeConn) {
close(conn);
}
throw new SQLException("Null SQL statement");
}
PreparedStatement stmt = null;
int rows = 0;
try {
stmt = this.prepareStatement(conn, sql);
this.fillStatement(stmt, params);
rows = stmt.executeUpdate();
} catch (SQLException e) {
this.rethrow(e, sql, params);
} finally {
close(stmt);
if (closeConn) {
close(conn);
}
}
return rows;
}