Как мне использовать try-with-resources с JDBC?

У меня есть метод получения пользователей из базы данных с помощью JDBC:

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;
}

Как использовать Java 7 try-with-resources для улучшения этот код?

Я пробовал использовать приведенный ниже код, но он использует много блоков try и не сильно улучшает читаемость . Должен ли я использовать try-with-resources по-другому?

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

135
задан dimwittedanimal 30 January 2019 в 20:06
поделиться