Sobes.tech
Middle

Kako je struktuisana klasa ResultSet u Javi?

sobes.tech АИ

Одговор од АИ

ResultSet je interfejs u paketu java.sql, koji predstavlja rezultate izvršenja SQL upita. Omogućava pristup podacima korak po korak (red po red).

Ključni aspekti:

  • Kursor: ResultSet podržava kursor koji ukazuje na trenutni red podataka. U početku, kursor je postavljen pre prvog reda.
  • Navigacija: Za pomeranje kursora koriste se metode poput next(), previous(), first(), last(). next() vraća true ako je uspešno pomerio kursor na sledeći red, a false ako je dostignut kraj rezultata.
  • Tipovi: Postoje različiti tipovi ResultSet sa različitim mogućnostima navigacije i ažuriranja podataka:
    • TYPE_FORWARD_ONLY: Kursor se pomera samo unapred (najefikasnije).
    • TYPE_SCROLL_INSENSITIVE: Kursor može da se pomera u bilo kom pravcu, promene u bazi podataka se ne odražavaju.
    • TYPE_SCROLL_SENSITIVE: Kursor može da se pomera u bilo kom pravcu, promene u bazi podataka se odražavaju (može biti sporije).
  • Konkurentnost: Određuje da li je moguće menjati podatke putem ResultSet:
    • CONCUR_READ_ONLY: Samo za čitanje.
    • CONCUR_UPDATABLE: Za čitanje i pisanje.
  • Dobijanje podataka: Podaci iz trenutnog reda se izvlače pomoću metoda kao što su get<Type>(), na primer, getString(int columnIndex), getInt(String columnLabel), getDate(int columnIndex).
  • Zatvaranje: Važno je zatvoriti ResultSet nakon korišćenja, kako bi se oslobodili resursi, koristeći metodu close(). Obično se to radi u finally bloku ili sa try-with-resources.

Primer upotrebe:

// Pretpostavlja se da su connection i statement već inicijalizovani
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 korisnika: " + id + ", Ime: " + name);
    }
} catch (SQLException e) {
    e.printStackTrace();
}

ResultSet ne čuva sve podatke u memoriji odjednom, što ga čini efikasnim pri radu sa velikim obimima podataka.