Middle
Ako je štruktúrovaná trieda ResultSet v Jave?
sobes.tech AI
Odpoveď od AI
ResultSet je rozhranie v balíku java.sql, ktoré predstavuje výsledky vykonania SQL dotazu. Poskytuje prístup k údajom krok za krokom (riadok po riadku).
Kľúčové aspekty:
- Kurzor:
ResultSetpodporuje kurzor, ktorý ukazuje na aktuálny riadok údajov. Pôvodne je kurzor umiestnený pred prvým riadkom. - Navigácia: Na presun kurzora sa používajú metódy ako
next(),previous(),first(),last().next()vrátitrue, ak sa kurzor úspešne presunul na ďalší riadok, afalse, ak je dosiahnutý koniec výsledku. - Typy: Existujú rôzne typy
ResultSets rôznymi možnosťami navigácie a aktualizácie údajov:TYPE_FORWARD_ONLY: Kurzorem sa pohybuje iba dopredu (najefektívnejšie).TYPE_SCROLL_INSENSITIVE: Kurzor sa môže pohybovať v ľubovoľnom smere, zmeny v databáze sa neodrážajú.TYPE_SCROLL_SENSITIVE: Kurzor sa môže pohybovať v ľubovoľnom smere, zmeny v databáze sa odrážajú (môže byť pomalšie).
- Konkurencia: Určuje, či je možné meniť údaje prostredníctvom
ResultSet:CONCUR_READ_ONLY: Iba na čítanie.CONCUR_UPDATABLE: Na čítanie a zápis.
- Získavanie údajov: Údaje z aktuálneho riadku sa extrahujú pomocou metód
get<Type>(), napríkladgetString(int columnIndex),getInt(String columnLabel),getDate(int columnIndex). - Zatváranie: Je dôležité zatvoriť
ResultSetpo použití, aby sa uvoľnili zdroje, pomocou metódyclose(). Zvyčajne sa to robí v blokufinallyalebo s try-with-resources.
Príklad použitia:
// Predpokladá sa, že connection a statement sú už inicializované
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 používateľa: " + id + ", Meno: " + name);
}
} catch (SQLException e) {
e.printStackTrace();
}
ResultSet neukladá všetky údaje v pamäti naraz, čo ho robí efektívnym pri práci s veľkými objemami údajov.