Middle
170
Jak jest zbudowana klasa ResultSet w Java?
Odpowiedź od AI
sobes.tech AI
ResultSet jest interfejsem w pakiecie java.sql, reprezentującym wyniki wykonania zapytania SQL. Umożliwia dostęp do danych krok po kroku (wiersz po wierszu).
Kluczowe aspekty:
- Kursor:
ResultSetobsługuje kursor wskazujący na bieżący wiersz danych. Początkowo kursor znajduje się przed pierwszym wierszem. - Nawigacja: Do przemieszczania kursora służą metody takie jak
next(),previous(),first(),last().next()zwracatrue, jeśli kursor pomyślnie przesunął się do następnego wiersza, afalse, jeśli osiągnięto koniec wyników. - Typy: Istnieją różne typy
ResultSetz różnymi możliwościami nawigacji i aktualizacji danych:TYPE_FORWARD_ONLY: Kursor porusza się tylko do przodu (najwydajniejszy).TYPE_SCROLL_INSENSITIVE: Kursor może się poruszać w dowolnym kierunku, zmiany w bazie danych nie są odzwierciedlane.TYPE_SCROLL_SENSITIVE: Kursor może się poruszać w dowolnym kierunku, zmiany w bazie danych są odzwierciedlane (może być wolniejsze).
- Konkurencja: Określa, czy można modyfikować dane przez
ResultSet:CONCUR_READ_ONLY: Tylko do odczytu.CONCUR_UPDATABLE: Odczyt i zapis.
- Pobieranie danych: Dane z bieżącego wiersza są pobierane za pomocą metod
get<Type>(), np.getString(int columnIndex),getInt(String columnLabel),getDate(int columnIndex). - Zamykanie: Ważne jest zamknięcie
ResultSetpo użyciu, aby zwolnić zasoby, używając metodyclose(). Zazwyczaj robi się to w blokufinallylub z użyciem try-with-resources.
Przykład użycia:
// Zakłada się, że connection i statement są już zainicjalizowane
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 użytkownika: " + id + ", Imię: " + name);
}
} catch (SQLException e) {
e.printStackTrace();
}
ResultSet nie przechowuje wszystkich danych w pamięci jednocześnie, co czyni go wydajnym przy pracy z dużymi ilościami danych.