Sobes.tech
Middle

Ako je štruktúrovaná trieda ResultSet v Jave?

sobes.tech AI

Odpoveď od AI

ResultSet je rozhranie v balíku java.sql, ktoré predstavuje výsledky vykonania SQL dotazu. Poskytuje prístup k údajom krok za krokom (riadok po riadku).

Kľúčové aspekty:

  • Kurzor: ResultSet podporuje kurzor, ktorý ukazuje na aktuálny riadok údajov. Pôvodne je kurzor umiestnený pred prvým riadkom.
  • Navigácia: Na presun kurzora sa používajú metódy ako next(), previous(), first(), last(). next() vráti true, ak sa kurzor úspešne presunul na ďalší riadok, a false, ak je dosiahnutý koniec výsledku.
  • Typy: Existujú rôzne typy ResultSet s rôznymi možnosťami navigácie a aktualizácie údajov:
    • TYPE_FORWARD_ONLY: Kurzorem sa pohybuje iba dopredu (najefektívnejšie).
    • TYPE_SCROLL_INSENSITIVE: Kurzor sa môže pohybovať v ľubovoľnom smere, zmeny v databáze sa neodrážajú.
    • TYPE_SCROLL_SENSITIVE: Kurzor sa môže pohybovať v ľubovoľnom smere, zmeny v databáze sa odrážajú (môže byť pomalšie).
  • Konkurencia: Určuje, či je možné meniť údaje prostredníctvom ResultSet:
    • CONCUR_READ_ONLY: Iba na čítanie.
    • CONCUR_UPDATABLE: Na čítanie a zápis.
  • Získavanie údajov: Údaje z aktuálneho riadku sa extrahujú pomocou metód get<Type>(), napríklad getString(int columnIndex), getInt(String columnLabel), getDate(int columnIndex).
  • Zatváranie: Je dôležité zatvoriť ResultSet po použití, aby sa uvoľnili zdroje, pomocou metódy close(). Zvyčajne sa to robí v bloku finally alebo s try-with-resources.

Príklad použitia:

// Predpokladá sa, že connection a statement sú už inicializované
try (ResultSet resultSet = statement.executeQuery("SELECT id, name FROM users")) {
    while (resultSet.next()) {
        int id = resultSet.getInt("id");
        String name = resultSet.getString("name");
        System.out.println("ID používateľa: " + id + ", Meno: " + name);
    }
} catch (SQLException e) {
    e.printStackTrace();
}

ResultSet neukladá všetky údaje v pamäti naraz, čo ho robí efektívnym pri práci s veľkými objemami údajov.