Trước tiên, hãy ngừng xây dựng SQL như vậy - sử dụng SQL được tham số hóa và PreparedStatement
. Mã hiện tại của bạn dễ bị tấn công SQL injection.
Về cơ bản, không gọi rs.next()
hai lần liên tiếp (đầu tiên trong if
sau đó trong while
) ... bạn có thể dễ dàng làm điều đó bằng cách chuyển đổi while
lặp lại thành một do/while
vòng lặp:
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());
}
Hoặc chỉ có while
vòng lặp, với một biến riêng biệt để phát hiện rằng bạn đã thấy một số kết quả:
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");
}
(Ngoài ra, bạn nên sử dụng try-with-resources để đóng ResultSet
của mình v.v. và chỉ in dấu vết ngăn xếp vào stdout hầu như không bao giờ là cách thích hợp để xử lý các trường hợp ngoại lệ ...)