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ệ ...)