Sluta först bygga SQL på det sättet - använd parametrerad SQL och en PreparedStatement
. Din nuvarande kod är sårbar för SQL-injektionsattacker.
I princip, anrop inte rs.next()
två gånger i rad (först i if
sedan i while
)... du kan enkelt göra det genom att konvertera din while
loop till en do/while
loop:
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 bara har while
loop, med en separat variabel för att upptäcka att du har sett några resultat:
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");
}
(Dessutom bör du använda prova-med-resurser för att stänga ditt ResultSet
etc, och att bara skriva ut en stackspårning till stdout är nästan aldrig det lämpliga sättet att hantera undantag...)