Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Menghindari melewatkan baris Dengan metode next() dari ResultSet

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



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. JDBC mengembalikan jumlah baris yang terpengaruh yang salah

  2. Bagaimana Fungsi RTRIM() Bekerja di MySQL

  3. Hasilkan array PHP dari MySQL dengan nilai kunci dari kolom id

  4. Untuk menjalankan .sql -file di MySQL

  5. Migrasi Laravel - Masalah saat membuat stempel waktu