Per prima cosa, smetti di creare SQL in questo modo:usa SQL parametrizzato e un PreparedStatement
. Il tuo codice attuale è vulnerabile agli attacchi SQL injection.
Fondamentalmente, non chiamare rs.next()
due volte di seguito (la prima in if
poi nel while
)... puoi farlo facilmente convertendo il tuo while
loop in un do/while
ciclo:
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());
}
O solo avere il while
loop, con una variabile separata per rilevare che ne hai visti alcuni risultati:
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");
}
(Inoltre, dovresti usare try-with-resources per chiudere il tuo ResultSet
ecc, e la semplice stampa di una traccia dello stack su stdout non è quasi mai il modo appropriato per gestire le eccezioni...)