Votre try-with-resources fait close le ResultSet , mais là n'est pas le vrai problème. Vous devez configurer la Statement avant vous l'exécutez (et préférez PreparedStatement et paramètres de liaison). Quelque chose comme,
public Integer findByName(String name) throws SQLException {
String sql = "select id from artists where name=?";
Connection con = Database.getConnection();
try (PreparedStatement stmt = con.prepareStatement(sql)) {
stmt.setString(1, name);
try (ResultSet rs = stmt.executeQuery()) {
return rs.next() ? rs.getInt(1) : null;
}
}
}