sql >> Databáze >  >> RDS >> Mysql

Vyhnutí se přeskočení řádku Metodou next() sady ResultSet

Nejprve přestaňte takto vytvářet SQL – použijte parametrizované SQL a PreparedStatement . Váš aktuální kód je zranitelný vůči útokům SQL injection.

V zásadě nevolejte rs.next() dvakrát za sebou (nejprve v if pak v while )... můžete to snadno provést převodem while smyčka do do/while smyčka:

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

Nebo jen mít while smyčka se samostatnou proměnnou, která zjišťuje, že jste nějaké viděli výsledky:

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

(Kromě toho byste měli použít try-with-resources k uzavření ResultSet atd. a pouhý tisk trasování zásobníku na stdout není téměř nikdy vhodný způsob, jak zpracovat výjimky...)



  1. Jak vrátit tabulku podle typu řádku v PL/pgSQL

  2. Počet sloupců souboru mysql.proc je nesprávný. Očekávaných 20, nalezeno 16. Tabulka je pravděpodobně poškozená

  3. Jak nastavit PostgreSQL pro Play 2.0?

  4. Změna pořadí záznamů PostgreSQL pomocí aktualizace s dílčím výběrem