sql >> Databasteknik >  >> RDS >> Mysql

Undvika att hoppa över en rad Genom next() Method of ResultSet

Sluta först bygga SQL på det sättet - använd parametrerad SQL och en PreparedStatement . Din nuvarande kod är sårbar för SQL-injektionsattacker.

I princip, anrop inte rs.next() två gånger i rad (först i if sedan i while )... du kan enkelt göra det genom att konvertera din while loop till en do/while loop:

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

Eller bara har while loop, med en separat variabel för att upptäcka att du har sett några resultat:

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

(Dessutom bör du använda prova-med-resurser för att stänga ditt ResultSet etc, och att bara skriva ut en stackspårning till stdout är nästan aldrig det lämpliga sättet att hantera undantag...)



  1. Hur formaterar man datum från tidsstämpel i PHP?

  2. Migrera en Oracle-databas till MySQL på AWS, del 1

  3. Hur extraherar man endast kolumner som inte har nollvärden i mysql och php?

  4. Lägga till rader i tabellen med unik kolumn:Få befintliga ID-värden plus nyskapade