开发手册 欢迎您!
软件开发者资料库

Java Jdbc try-with-resources 自动资源释放

本文主要介绍通过try-with-resources 自动资源释放,通过单个try catch块来释放Connection、PreparedStatement和ResultSet这3个对象。

1、一般写法jdbc使用的try catch代码

public List getUser(int userId) {
String sql = "SELECT id, name FROM users WHERE id = ?";
List users = new ArrayList();
try {
Connection con = DriverManager.getConnection(myConnectionURL);
PreparedStatement ps = con.prepareStatement(sql);
ps.setInt(1, userId);
ResultSet rs = ps.executeQuery();
while(rs.next()) {
users.add(new User(rs.getInt("id"), rs.getString("name")));
}
rs.close();
ps.close();
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
return users;
}

2、Jdbc使用try-with-resources自动资源释放代码

public List getUser(int userId) {    try (Connection con = DriverManager.getConnection(myConnectionURL);         PreparedStatement ps = createPreparedStatement(con, userId);          ResultSet rs = ps.executeQuery()) {         //...    } catch (SQLException e) {        e.printStackTrace();    }}private PreparedStatement createPreparedStatement(Connection con, int userId) throws SQLException {    String sql = "SELECT id, username FROM users WHERE id = ?";    PreparedStatement ps = con.prepareStatement(sql);    ps.setInt(1, userId);    return ps;}

另外,try()中的代码出现异常也是可以捕获到的。