Mysql
 sql >> Database >  >> RDS >> Mysql

Evitare di saltare una riga Con next() Metodo di ResultSet

Per prima cosa, smetti di creare SQL in questo modo:usa SQL parametrizzato e un PreparedStatement . Il tuo codice attuale è vulnerabile agli attacchi SQL injection.

Fondamentalmente, non chiamare rs.next() due volte di seguito (la prima in if poi nel while )... puoi farlo facilmente convertendo il tuo while loop in un do/while ciclo:

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

O solo avere il while loop, con una variabile separata per rilevare che ne hai visti alcuni risultati:

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

(Inoltre, dovresti usare try-with-resources per chiudere il tuo ResultSet ecc, e la semplice stampa di una traccia dello stack su stdout non è quasi mai il modo appropriato per gestire le eccezioni...)