Sobes.tech
Middle

Kaip yra sukurta klasė ResultSet Java?

sobes.tech AI

Atsakymas iš AI

ResultSet — tai java.sql paketo interfeisas, kuris atstovauja SQL užklausos rezultatams. Jis suteikia galimybę prieiti prie duomenų etapais (eilutė po eilutės).

Pagrindiniai aspektai:

  • Kursorius: ResultSet palaiko kursorių, kuris nurodo į dabartinę duomenų eilutę. Pradinė padėtis yra prieš pirmą eilutę.
  • Navigacija: Kursoriaus judėjimui naudojami metodai next(), previous(), first(), last(). next() grąžina true, jei sėkmingai perkelta į kitą eilutę, ir false, jei pasiekta rezultatų pabaiga.
  • Tipai: Yra skirtingi ResultSet tipai, turintys skirtingas navigacijos ir duomenų atnaujinimo galimybes:
    • TYPE_FORWARD_ONLY: Kursorius juda tik pirmyn (efektyviausias).
    • TYPE_SCROLL_INSENSITIVE: Kursorius gali judėti bet kuria kryptimi, pakeitimai duomenų bazėje nėra matomi.
    • TYPE_SCROLL_SENSITIVE: Kursorius gali judėti bet kuria kryptimi, pakeitimai matomi (gali būti lėčiau).
  • Konkurencija: Nustato, ar galima keisti duomenis per ResultSet:
    • CONCUR_READ_ONLY: Tik skaityti.
    • CONCUR_UPDATABLE: Skaityti ir redaguoti.
  • Duomenų gavimas: Duomenys iš dabartinės eilutės gaunami naudojant get<Type>() metodus, pvz., getString(int columnIndex), getInt(String columnLabel), getDate(int columnIndex).
  • Uždarymas: Svarbu uždaryti ResultSet po naudojimo, kad būtų atlaisvinti ištekliai, naudojant close() metodą. Paprastai tai daroma finally bloke arba naudojant try-with-resources.

Pavyzdys:

// Manoma, kad `connection` ir `statement` jau inicializuoti
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("Vartotojo ID: " + id + ", Vardas: " + name);
    }
} catch (SQLException e) {
    e.printStackTrace();
}

ResultSet nevartoja visų duomenų vienu metu atmintyje, todėl jis yra efektyvus dirbant su dideliais duomenų kiekiais.