Mysql
 sql >> Base de données >  >> RDS >> Mysql

Éviter de sauter une ligne Par la méthode next() de ResultSet

Tout d'abord, arrêtez de construire du SQL comme ça - utilisez du SQL paramétré et un PreparedStatement . Votre code actuel est vulnérable aux attaques par injection SQL.

Fondamentalement, n'appelez pas rs.next() deux fois de suite (d'abord dans le if puis dans le while )... vous pouvez facilement le faire en convertissant votre while boucle dans un do/while boucle :

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

Ou juste avoir le while boucle, avec une variable distincte pour détecter que vous avez vu quelques résultats :

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

(De plus, vous devez utiliser try-with-resources pour fermer votre ResultSet etc, et le simple fait d'imprimer une trace de pile sur stdout n'est presque jamais la bonne façon de gérer les exceptions...)