sql >> Database >  >> RDS >> Mysql

Voorkomen dat een rij wordt overgeslagen Door next() Methode van ResultSet

Stop eerst zo met het bouwen van SQL - gebruik SQL met parameters en een PreparedStatement . Uw huidige code is kwetsbaar voor SQL-injectie-aanvallen.

Bel in principe niet rs.next() twee keer achter elkaar (eerst in de if dan in de while )... u kunt dat eenvoudig doen door uw while . te converteren loop in een do/while lus:

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

Of gewoon hebben de while loop, met een aparte variabele om te detecteren dat je sommige . hebt gezien resultaten:

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

(Bovendien moet u try-with-resources gebruiken om uw ResultSet te sluiten enz., en alleen het afdrukken van een stacktracering naar stdout is bijna nooit de juiste manier om met uitzonderingen om te gaan...)



  1. SQL om op datum te tellen

  2. Een MySQL-database dupliceren op dezelfde server

  3. Hoe kan ik voorouder-ID's krijgen voor willekeurige recursiediepte in één SQL-query?

  4. Een MySQL-weergave maken met een automatisch oplopende ID-kolom