Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Tránh bỏ qua một hàng Bằng phương thức next () của ResultSet

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



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm thế nào để kiểm tra xem nút loại nhập liệu có được nhấn trong PHP hay không?

  2. mysql quên ai đã đăng nhập:lệnh bị từ chối đối với người dùng '' @ '%'

  3. Có cách nào để kiểm tra hiệu suất của Lập chỉ mục mysql không

  4. Lưu vào bộ đệm với tệp php

  5. Máy chủ MySQL đã Gone Away trong Drupal 7