Sobes.tech
Middle

Kā ir uzbūvēta klase ResultSet Java?

sobes.tech AI

Atbilde no AI

ResultSet — tas ir interfeiss java.sql paketā, kas pārstāv SQL vaicājuma rezultātus. Tas nodrošina piekļuvi datiem pa posmiem (rinda pēc rindas).

Galvenie aspekti:

  • Kurors: ResultSet atbalsta kursora, kas norāda uz pašreizējo datu rindu. Sākotnēji kurors atrodas pirms pirmās rindas.
  • Navigācija: Lai pārvietotos ar kursora, izmanto tādus metodes kā next(), previous(), first(), last(). next() atgriež true, ja veiksmīgi pārvietojās uz nākamo rindu, un false, ja sasniedza rezultātu beigās.
  • Tipi: Ir dažādi ResultSet tipi ar dažādām navigācijas un datu atjaunošanas iespējām:
    • TYPE_FORWARD_ONLY: Kurors pārvietojas tikai uz priekšu (visefektīvākais).
    • TYPE_SCROLL_INSENSITIVE: Kurors var pārvietoties jebkurā virzienā, izmaiņas datu bāzē nav redzamas.
    • TYPE_SCROLL_SENSITIVE: Kurors var pārvietoties jebkurā virzienā, izmaiņas ir redzamas (var būt lēnāks).
  • Konkurence: Nosaka, vai ir atļauts mainīt datus caur ResultSet:
    • CONCUR_READ_ONLY: Tikai lasīšana.
    • CONCUR_UPDATABLE: Lasīšana un rediģēšana.
  • Datu iegūšana: Dati no pašreizējās rindas tiek iegūti ar get<Type>() metodēm, piemēram, getString(int columnIndex), getInt(String columnLabel), getDate(int columnIndex).
  • Aizvēršana: Ir svarīgi aizvērt ResultSet pēc lietošanas, lai atbrīvotu resursus, izmantojot close() metodi. Parasti tas tiek darīts finally blokā vai ar try-with-resources.

Piemērs:

// Pieņemot, ka `connection` un `statement` jau ir inicializēti
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("Lietotāja ID: " + id + ", Vārds: " + name);
    }
} catch (SQLException e) {
    e.printStackTrace();
}

ResultSet nesaglabā visus datus vienlaikus atmiņā, kas padara to efektīvu darbā ar lieliem datu apjomiem.