Mysql
 sql >> база данни >  >> RDS >> Mysql

Избягване на пропускане на ред чрез next() Метод на ResultSet

Първо, спрете да създавате SQL по този начин - използвайте параметризиран SQL и PreparedStatement . Текущият ви код е уязвим за атаки чрез SQL инжектиране.

По принцип не извиквайте rs.next() два пъти подред (първо в if след това в while )... можете лесно да направите това, като конвертирате вашия while цикъл в do/while цикъл:

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());
}

Или само има while цикъл, с отделна променлива за откриване, че сте видели някои резултати:

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");
}

(Освен това трябва да използвате try-with-resources, за да затворите своя ResultSet и т.н. и просто отпечатване на проследяване на стека към stdout почти никога не е подходящият начин за обработка на изключения...)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ningx, uwsgi, python постоянна грешка в mysql след известно време от стартиране на приложението

  2. Показване (списък) MySQL бази данни на Linux чрез командния ред

  3. Вмъкване на обект datetime.datetime на Python в MySQL

  4. Как да изчакате изчакване на mysql++ заявка в C++

  5. @BindBean на JDBI не намира наименувани параметри в класа на bean по време на INSERT