notatki_java_05.pdf

(188 KB) Pobierz
694685102 UNPDF
Plan wykładu
1. Zaawansowane możliwości JDBC:
rodzaje obiektów ResultSet ,
dodatkowe możliwości obiektów ResultSet ,
zapytania prekompilowane,
wywoływanie zdalnych procedur,
transakcje.
2. Przegląd wybranych systemów bazodanowych:
HSQLDB.
1
Rodzaje obiektów ResultSet
Ze względu na dostęp do odebranych danych obiekty ResultSet dzielimy na:
TYPE_FORWARD_ONLY – odbiór danych kolejno od pierwszego do ostatniego
rekordu,
TYPE_SCROLL_INSENSITIVE – dostęp do dowolnych danych, przygotowane
wyniki nie zmieniają sie pod wpływem zmian w bazie.
TYPE_SCROLL_SENSITIVE – dostęp do dowolnych danych, przygotowane wyniki
zmieniają sie pod wpływem zmian w bazie. Kolejność rekordów nie musi być stała.
Rodzaj dostępu zmieniamy metodą setFetchDirection(int) . Do przechodzenia
między rekordami służą metody: next() , previous() , last() , first() ,
absolute() , relative() .
2
Rodzaje obiektów ResultSet
Obiekty ResultSet mogą mieć różne możliwości zmieniana odebranych danych:
1. CONCUR_READ_ONLY – dane nie mogą być zmienione poprzez metody
updateXXX() .
najwyższy poziom współbieżności (największa liczba użytkowników jednocześnie
operujących na danych
Jedyna możliwość w wersji JDBC 1.0
2. CONCUR_UPDATABLE – dane mogą być zmieniane.
zmniejszony poziom współbieżności,
mniejsza wydajność.
3
Rodzaje obiektów ResultSet
Connection con = DriverManager.getConnection(
"jdbc:my_subprotocol:my_subname");
Statement stmt = con.createStatement(
ResultSet.TYPE_SCROLL_SENSITIVE,
ResultSet.CONCUR_UPDATABLE,
ResultSet.HOLD_CURSORS_OVER_COMMIT);
stmt.setFetchSize(25);
ResultSet rs = stmt.executeQuery(
"SELECT col1, col2 FROM table1");
Obiekt rs udostępnia dane w dowolnej kolejności, umożliwia zmianę danych, nie
jest zamykany przy zatwierdzeniu transakcji. Do bazy danych zostaje przekazana
sugestia, aby dane odbierać w pakietach po 25 rekordów. 4
Inne operacje na obiektach ResultSet
1. Usuwanie rekordów:
rs.first();
rs.deleteRow();
2. Wstawianie rekordów:
rs.moveToInsertRow();
rs.updateObject(1, myArray);
rs.updateInt(2, 3857);
rs.updateString(3, "Mysteries");
rs.insertRow();
rs.first();
5
Zgłoś jeśli naruszono regulamin