Tout d'abord, arrêtez de construire du SQL comme ça - utilisez du SQL paramétré et un PreparedStatement
. Votre code actuel est vulnérable aux attaques par injection SQL.
Fondamentalement, n'appelez pas rs.next()
deux fois de suite (d'abord dans le if
puis dans le while
)... vous pouvez facilement le faire en convertissant votre while
boucle dans un do/while
boucle :
if (rs.next()) {
do {
System.out.print(rs.getString("idUser") + " ,");
System.out.print(rs.getString("Name") + " ,");
System.out.print(rs.getString("Email") + " ,");
System.out.println(rs.getString("country") + " .");
} while (rs.next());
}
Ou juste avoir le while
boucle, avec une variable distincte pour détecter que vous avez vu quelques résultats :
bool anyResults = false;
while (rs.next()) {
anyResults = true;
System.out.print(rs.getString("idUser") + " ,");
System.out.print(rs.getString("Name") + " ,");
System.out.print(rs.getString("Email") + " ,");
System.out.println(rs.getString("country") + " .");
}
if (!anyResults) {
JOptionPane.showMessageDialog(null, "Not Found");
}
(De plus, vous devez utiliser try-with-resources pour fermer votre ResultSet
etc, et le simple fait d'imprimer une trace de pile sur stdout n'est presque jamais la bonne façon de gérer les exceptions...)