Najpierw przestań budować SQL w ten sposób - użyj sparametryzowanego SQL i PreparedStatement
. Twój obecny kod jest podatny na ataki typu SQL injection.
Zasadniczo nie wywołuj rs.next()
dwa razy z rzędu (najpierw w if
następnie w while
)... możesz to łatwo zrobić, konwertując swój while
pętla do do/while
pętla:
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());
}
Lub po prostu mieć while
pętla z osobną zmienną do wykrywania, że widziałeś niektóre wyniki:
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");
}
(Dodatkowo powinieneś użyć try-with-resources, aby zamknąć ResultSet
itp., a samo drukowanie śladu stosu na standardowe wyjście prawie nigdy nie jest odpowiednim sposobem obsługi wyjątków...)