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:
ResultSetpalaiko 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ąžinatrue, jei sėkmingai perkelta į kitą eilutę, irfalse, jei pasiekta rezultatų pabaiga. - Tipai: Yra skirtingi
ResultSettipai, 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
ResultSetpo naudojimo, kad būtų atlaisvinti ištekliai, naudojantclose()metodą. Paprastai tai daromafinallybloke 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.