Nejprve přestaňte takto vytvářet SQL – použijte parametrizované SQL a PreparedStatement
. Váš aktuální kód je zranitelný vůči útokům SQL injection.
V zásadě nevolejte rs.next()
dvakrát za sebou (nejprve v if
pak v while
)... můžete to snadno provést převodem while
smyčka do do/while
smyčka:
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());
}
Nebo jen mít while
smyčka se samostatnou proměnnou, která zjišťuje, že jste nějaké viděli výsledky:
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");
}
(Kromě toho byste měli použít try-with-resources k uzavření ResultSet
atd. a pouhý tisk trasování zásobníku na stdout není téměř nikdy vhodný způsob, jak zpracovat výjimky...)