Pertama, berhenti membuat SQL seperti itu - gunakan SQL berparameter dan PreparedStatement
. Kode Anda saat ini rentan terhadap serangan injeksi SQL.
Pada dasarnya, jangan panggil rs.next()
dua kali berturut-turut (pertama di if
lalu di while
)... Anda dapat dengan mudah melakukannya dengan mengonversi while
loop menjadi do/while
lingkaran:
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());
}
Atau hanya memiliki while
loop, dengan variabel terpisah untuk mendeteksi bahwa Anda telah melihat beberapa hasil:
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");
}
(Selain itu, Anda harus menggunakan try-with-resources untuk menutup ResultSet
Anda dll, dan hanya mencetak jejak tumpukan ke stdout hampir tidak pernah merupakan cara yang tepat untuk menangani pengecualian...)