Stop først med at bygge SQL på den måde - brug parameteriseret SQL og en PreparedStatement
. Din nuværende kode er sårbar over for SQL-injektionsangreb.
Som udgangspunkt skal du ikke kalde rs.next()
to gange i træk (først i if
). derefter i while
)... du kan nemt gøre det ved at konvertere din while
loop ind i en do/while
sløjfe:
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());
}
Eller bare har while
loop, med en separat variabel for at registrere, at du har set nogle resultater:
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");
}
(Desuden bør du bruge prøv-med-ressourcer til at lukke dit ResultSet
osv., og blot at udskrive et stakspor til stdout er næsten aldrig den rigtige måde at håndtere undtagelser på...)