Sobes.tech
Middle

Hogyan épül fel a ResultSet osztály Java-ban?

sobes.tech MI

Válasz az MI-től

A ResultSet a java.sql csomagban található interfész, amely az SQL lekérdezés eredményeit reprezentálja. Lehetővé teszi az adatok lépésenkénti (sorról sorra) hozzáférését.

Főbb jellemzők:

  • Kurzor: A ResultSet támogat egy kurzort, amely a jelenlegi adatsort mutatja. Kezdetben a kurzor a első sor előtt helyezkedik el.
  • Navigáció: A kurzor mozgatásához olyan metódusokat használunk, mint a next(), previous(), first(), last(). A next() akkor ad vissza true értéket, ha sikeresen lépett a következő sorra, és false, ha a eredmény vége felé ért.
  • Típusok: Különböző típusú ResultSet létezik, különböző navigációs és frissítési lehetőségekkel:
    • TYPE_FORWARD_ONLY: A kurzor csak előre mozog (leghatékonyabb).
    • TYPE_SCROLL_INSENSITIVE: A kurzor bármilyen irányba mozoghat, a változások nem tükröződnek.
    • TYPE_SCROLL_SENSITIVE: A kurzor bármilyen irányba mozoghat, a változások tükröződnek (lassabb lehet).
  • Konkurencia: Meghatározza, hogy lehet-e módosítani az adatokat a ResultSet-en keresztül:
    • CONCUR_READ_ONLY: Csak olvasás.
    • CONCUR_UPDATABLE: Olvasás és írás.
  • Adatok lekérése: A jelenlegi sor adatai a get<Type>() metódusokkal nyerhetők ki, például getString(int columnIndex), getInt(String columnLabel), getDate(int columnIndex).
  • Zárás: Fontos, hogy a ResultSet-et lezárjuk használat után, hogy felszabadítsuk az erőforrásokat, a close() metódussal. Általában ezt a finally blokkban vagy try-with-resources segítségével tesszük.

Használati példa:

// Feltételezzük, hogy a connection és a statement már inicializálva van
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("Felhasználó azonosító: " + id + ", Név: " + name);
    }
} catch (SQLException e) {
    e.printStackTrace();
}

A ResultSet nem tárolja az összes adatot a memóriában egyszerre, így hatékony nagy adatmennyiségek esetén.