Dlaczego JDBC jest lepszy ni ODBC? Zgodno ze standardami SQL. Sterowniki.



Podobne dokumenty
Informatyka I. Standard JDBC Programowanie aplikacji bazodanowych w języku Java

Informatyka I. Programowanie aplikacji bazodanowych w języku Java. Standard JDBC.

Konfiguracja historii plików

Politechnika Warszawska Wydział Matematyki i Nauk Informacyjnych ul. Koszykowa 75, Warszawa

Edycja geometrii w Solid Edge ST

InsERT GT Własne COM 1.0

Zarządzanie Zasobami by CTI. Instrukcja

Microsoft Management Console

INSTRUKCJA WebPTB 1.0

Bazy danych II. Andrzej Grzybowski. Instytut Fizyki, Uniwersytet Śląski

Oprogramowanie FonTel służy do prezentacji nagranych rozmów oraz zarządzania rejestratorami ( zapoznaj się z rodziną rejestratorów FonTel ).

JDBC w LoXiMie. Interfejs Java Database Connectivity dla systemu LoXiM. Adam Michalik 2008

Program szkoleniowy Efektywni50+ Moduł III Standardy wymiany danych

Instrukcja Obsługi STRONA PODMIOTOWA BIP

System kontroli wersji SVN

JAVA I BAZY DANYCH. MATERIAŁY:

System Informatyczny CELAB. Przygotowanie programu do pracy - Ewidencja Czasu Pracy

System do kontroli i analizy wydawanych posiłków

PERSON Kraków

JDBC (Java Database Connectivity vit )

Chemoinformatyczne bazy danych - Wprowadzenie do technologii baz danych. Andrzej Bąk

Postanowienia ogólne. Usługodawcy oraz prawa do Witryn internetowych lub Aplikacji internetowych

Kancelaris - Zmiany w wersji 2.50

POLITYKA PRYWATNOŚCI SKLEPU INTERNETOWEGO

SKRÓCONA INSTRUKCJA OBSŁUGI ELEKTRONICZNEGO BIURA OBSŁUGI UCZESTNIKA BADANIA BIEGŁOŚCI

Zmiany w wersji 1.18 programu VinCent Office.

Chmura obliczeniowa. do przechowywania plików online. Anna Walkowiak CEN Koszalin

Instrukcja programu PControl Powiadowmienia.

GEO-SYSTEM Sp. z o.o. GEO-RCiWN Rejestr Cen i Wartości Nieruchomości Podręcznik dla uŝytkowników modułu wyszukiwania danych Warszawa 2007

Instrukcja dotycząca generowania klucza dostępowego do Sidoma v8

Wdrożenie modułu płatności eservice dla systemu Virtuemart 2.0.x

Przypomnienie najważniejszych pojęć z baz danych. Co to jest baza danych?

JAVA bazy danych. na bazie: Język Java - Podstawy Programowania - Jacek Rumiński

Systemy mikroprocesorowe - projekt

V. Wymagania dla wsparcia projektu oraz nadzoru eksploatacyjnego... 6

I. INSTALACJA BAZY DANYCH ORACLE10g EXPRESS EDITION

Dziedziczenie : Dziedziczenie to nic innego jak definiowanie nowych klas w oparciu o już istniejące.

PL/SQL. Zaawansowane tematy PL/SQL

Opis obsługi systemu Ognivo2 w aplikacji Komornik SQL-VAT

Programowanie komputerów. Wykład 10: Dostęp do baz danych z poziomu aplikacji Java. (JDBC Database Access)

SIECI KOMPUTEROWE I BAZY DANYCH

VinCent Office. Moduł Drukarki Fiskalnej

Ostatnia cena sprzeda y klienta 1.0 dodatek do Symfonia Faktura dla 1 firmy

Zobacz to na własne oczy. Przyszłość już tu jest dzięki rozwiązaniu Cisco TelePresence.

Przygotowały: Magdalena Golińska Ewa Karaś

Moduł. Rama 2D suplement do wersji Konstruktora 4.6

Ładowanie i reorganizacja

Automatyzacja procesu publikowania w bibliotece cyfrowej

Poniżej instrukcja użytkowania platformy

Praca na wielu bazach danych część 2. (Wersja 8.1)

dbsamples.udl lub przygotowany wcześniej plik dla Excela) i OK,

Nowe funkcjonalności

Warunki Oferty PrOmOcyjnej usługi z ulgą

Specyfikacja techniczna banerów Flash

1. Korzyści z zakupu nowej wersji Poprawiono Zmiany w słowniku Stawki VAT Zmiana stawki VAT w kartotece Towary...

PRESTASHOP INTEGRATOR XL BY CTI INSTRUKCJA

Rozwiązywanie nazw w sieci. Identyfikowanie komputerów w sieci

Administrator Konta - osoba wskazana Usługodawcy przez Usługobiorcę, uprawniona w imieniu Usługobiorcy do korzystania z Panelu Monitorującego.

Bazy danych. Andrzej Łachwa, UJ, /15

Foldery z dokumentami 1.0 dodatek do Symfonia Faktura dla 1 firmy

epuap Ogólna instrukcja organizacyjna kroków dla realizacji integracji

Wyzwania bezpieczeństwa nowoczesnych platform nauczania zdalnego

Formularz rzeczowo-cenowy PAKIET 2

Architektura komputerów

Metody dostępu do danych

Polityka prywatności strony internetowej wcrims.pl

Spis treści. Spis treści 3

I. Zakładanie nowego konta użytkownika.

db powernet Instalacja czytnika kart mikroprocesorowych (instrukcja)

elektroniczna Platforma Usług Administracji Publicznej

INTENSE BUSINESS INTELLIGENCE PLATFORM

Projektowanie bazy danych

Spis treści. Rozdział 1 ewyniki. mmedica - INSTR UKC JA UŻYTKO W NIKA

Aplikacje internetowe oparte na kluczowych technologiach Java Enterprise(Servlet,JSP,JDBC, )

Integracja systemów, integracja procesów

ZP Obsługa bankowa budżetu Miasta Rzeszowa i jednostek organizacyjnych

art. 488 i n. ustawy z dnia 23 kwietnia 1964 r. Kodeks cywilny (Dz. U. Nr 16, poz. 93 ze zm.),

Zintegrowane Systemy Zarządzania Biblioteką SOWA1 i SOWA2 SKONTRUM

Platforma do obsługi zdalnej edukacji

JAK INWESTOWAĆ W ROPĘ?

WYKAZ ZMIAN W INSTRUKCJI UśYTKOWNIKA KSI

System zarządzania bazą danych (SZBD) Proces przechodzenia od świata rzeczywistego do jego informacyjnej reprezentacji w komputerze nazywać będziemy

Tworzenie wielopoziomowych konfiguracji sieci stanowisk asix z separacją segmentów sieci - funkcja POMOST. Pomoc techniczna

Sieci komputerowe cel

Wiedza niepewna i wnioskowanie (c.d.)

emszmal 3: Automatyczne księgowanie przelewów w sklepie internetowym Magento (plugin dostępny w wersji ecommerce)

PoluProduction. <jedi> Vision. Version 1.0

Wniosek o ustalenie warunków zabudowy

Jak usprawnić procesy controllingowe w Firmie? Jak nadać im szerszy kontekst? Nowe zastosowania naszych rozwiązań na przykładach.

KLAUZULE ARBITRAŻOWE

PODRĘCZNIK UŻYTKOWNIKA

Baza danych. Baza danych jest to zbiór danych powi zanych mi dzy sob pewnymi zale no ciami.

Spring MVC Andrzej Klusiewicz 1/18

Archiwum Prac Dyplomowych

INSTRUKCJA RUCHU I EKSPLOATACJI SIECI DYSTRYBUCYJNEJ

Skrócony podręcznik obsługi dla programu Wizualna poczta głosowa w wersji 8.5 lub nowszej

Opis zmian funkcjonalności platformy E-GIODO wprowadzonych w związku z wprowadzeniem możliwości wysyłania wniosków bez podpisu elektronicznego

Charakterystyka systemów plików

Kopia zapasowa i odzyskiwanie Podręcznik użytkownika

Transkrypt:

Wraz z powstaniem nowego, przeno nego, niezale nego od platformy i architektury j zyka programowania pojawiła si idea skonstruowania nowego interfejsu bazodanowego, który spełniałby podobne wymagania jak sam j zyk. Naturaln konsekwencj takiego rozumowania było oderwanie si od ju istniej cych API, w szczególno ci wprowadzonego przez Microsoft standardu Open DataBase Connectivity (ODBC), i opracowanie nowej technologii, wykonanej w pełni w Javie. Java DataBase Connectivity (JDBC) jest interfejsem programistycznym niskiego poziomu wywołuj cym bezpo rednio polecenia j zyka SQL, skonstruowanym w Javie i przeznaczonym dla j zyka Java. Interfejs JDBC umo liwia ustandaryzowany dost p do wi kszo ci obecnych na rynku systemów bazodanowych. Dlaczego JDBC jest lepszy ni ODBC? Stworzenie nowego interfejsu dost pu do systemu zarz dzania baz danych podyktowane było głównie faktem, i korzystanie z interfejsu firmy Microsoft zaadaptowanego dla programów Javy nie stanowiło dobrego rozwi zania. Główny problem stanowi fakt, e ODBC jest technologi stworzon w C i dla systemów opartych o ten wła nie j zyk. Konwersja ODBC na j zyk Java jest praktycznie niemo liwa do zrealizowani z powodów konstrukcyjnych np. problem wska ników. JDBC zgodnie z zamysłem twórców jest równie du o prostszy w u yciu a jednocze nie bardziej funkcjonalny ni ODBC. Nie wymaga r cznych ustawie na platformach klientów, poniewa kod JDBC jest automatycznie wykonywany na wszystkich platformach Javy od komputerów sieciowych do superkomputerów. Du zalet JDBC jest podobie stwo do technologii ODBC, dzi ki czemu mo e by ona wykorzystywana przez programistów pracuj cych wcze niej z ODBC. Co wa ne w czasie wprowadzania j zyka Java oraz sterowników JDBC prowadzono mosty JDBC-ODBC, dla baz danych nie posiadaj cych czystych sterowników JDBC. Zgodno ze standardami SQL. JDBC okre la pewien poziom zgodno ci z dotychczasowymi standardami SQL. Głównym zało eniem twórców było aby ka dy sterownik JDBC odpowiadał co najmniej wersji ANSI SQL-92 standardu SQL. Standard JDBC okre la tak e, e zapytania SQL przesyłane s do odpowiedniego SZBD bez wzgl du na mo liwo ich realizacji. W przypadku, gdy dany SZBD nie potrafi obsłu y zlecenia przekazanego przez JDBC, aplikacja podnosi okre lony wyj tek. JDBC udost pnia równie informacje o SZBD i jego cechach szczególnych (ustawieniach, mo liwo ciach itd.). Informacje te przekazywane s u ytkownikowi w postaci tzw. metadanych. Sterowniki. Sterownik JDBC (JDBC driver) jest zbiorem skompilowanych klas (bajtkod Javy), które implementuj wszystkie interfejsy zawarte w java.sql oraz przedefiniowuj pozostaj ce tam klasy. W wi kszo ci przypadków napisane s wył cznie w Javie. Implementacja bezpo rednio zale y od systemu zarz dzania baz danych, z któr b dzie si ł czy aplikacja wykorzystuj ca sterownik, dlatego ka dy sterownik JDBC słu y do komunikacji z konkretn baz danych i nie jest wykorzystywany w przypadku baz innych producentów. Nale y wspomnie, i poniewa Java jest j zykiem w pełni przeno nym, producenci sterowników musz przygotowywa tylko jeden pakiet dla ka dej wersji standardu JDBC (za 1

wyj tkiem sterowników 1. i 2. rodzaju). Tym samym, w odró nieniu np. od interfejsów dla j zyka C++, z jednego binarium korzystamy np. w sytemie Linux i w Windows NT. Wi kszo sterowników JDBC jest darmowa i dost pna jako uzupełnienie pakietu JDBC, wystarczy je pobra ze strony dostawców SZDB lub z repozytorium Sun a. Rozró niamy cztery podstawowe typy sterowników JDBC: 1. Mosty JDBC-ODBC (JDBC-ODBC bridge). W tym wypadku korzystamy ze sterownika ODBC z którym komunikuje si most. Zapytania formułowane w Javie s tłumaczone na j zyk sterownika ODBC, który odpowiada za wszelka komunikacja z baz danych. Stosuj c to rozwi zanie nale y si liczy z opłatami za oprogramowanie ODBC. 2. Java do API SZBD (Native-API partly-java). Program w Javie komunikuje si z interfejsem SZBD, a nie jak poprzednio, ze sterownikiem ODBC. 3. Po rednie JDBC (JDBC-Net pure Java) - sterownik JDBC komunikuje si z serwerem po rednicz cym, za pomoc protokołu niezale nego od SZBD. Serwer tłumaczy polecenia na protokół konkretnego SZBD i przesyła do niego otrzymane zapytania. Serwer mo e po redniczy w wymianie danych pomi dzy wieloma klientami i wieloma ró nymi SZBD. Tym samym jest to najbardziej ogólne i heterogeniczne rozwi zanie, obci one wzgl dami bezpiecze stwa. 4. Bezpo rednie JDBC (Native-protocol pure Java) - sterownik JDBC komunikuje si bezpo rednio z baz danych przy pomocy jej protokołu sieciowego (rozwi zanie najbardziej ogólne - stosowane cz sto w sieciach wewn trznych). Model warstwowy opisanych rozwi za : Dwa pierwsze rozwi zania nie s sprz towo niezale ne, wymagaj bowiem dostarczenia oprogramowania dedykowanego konkretnej platformie (sterownik ODBC (1) lub API bazy danych (2)). 2

Nawi zywanie poł czenia Aby skorzysta z klas java.sql, nale y pobra odpowiedni pakiet zawieraj cy dany sterownik JDBC, a nast pnie umie ci go (zgodnie z hierarchi katalogów zawart w archiwum) w katalogu widocznym dla maszyny wirtualnej Javy (zmienna CLASSPATH), dzi ki czemu ka da aplikacja b dzie mogła go dynamicznie załadowa. Do tego celu słu y polecenie: Class.forName("pełna_nazwa_sterownika") W ten sposób mo na rejestrowa dowoln liczb sterowników. Inn metod na załadowanie sterownika jest ustalenie własno ci jdbc.drivers na nazw ładowanej klasy: java -Djdbc.drivers="oracle.jdbc.driver.OracleDriver" program Je eli podana nazwa klasy sterownika jest niepoprawna, zgłaszany jest wyj tek ClassNotFoundException. Klasy sterowników ("pełna_nazwa_sterownika") dla ró nych SZBD: 1. dla bazy Oracle: oracle.jdbc.driver.oracledriver 2. dla bazy IBM DB2: COM.ibm.db2.jdbc.app.DB2Driver (Typ 2), com.ibm.db2.jcc.db2driver (Typ 4) 3. dla bazy MS/SQL Server/Sybase: com.microsoft.sqlserver.jdbc.sqlserverdriver dla wersji 2005 MS/SQL Server (dla sterownika Microsoftu) com.microsoft.jdbc.sqlserver.sqlserverdriver dla wersji 2000 MS/SQL Server (dla sterownika Microsoftu) 4. dla bazy mysql: com.mysql.jdbc.driver 5. dla bazy PostgreSQL: org.postgresql.driver Po zarejestrowaniu sterownika mo liwe jest nawi zanie poł czenia z SZBD. Poł czenie tworzone jest za pomoc statycznej metody getconnection klasy DriverManager. Pierwszym parametrem tej metody jest URL poł czenia z SZBD, okre laj cy z jakim SZBD nale y nawi za poł czenie oraz jego adres sieciowy. Kolejnymi parametrami s odpowiednio: nazwa u ytkownika i hasło. Connection con = DriverManager.getConnection( adres_url, nazwa_urzytkownika, hasło_urzytkownika ); Format adresu URL mo e by do skomplikowany i zawiera wiele ró nych opcji poł czenia. Przykładowe adresy URL, dla ró nych SZBD (w najprostszej wersji): 1. IBM DB2: jdbc:db2//server:port/database (Typ 4 sterownika) jdbc:db2//server/database (Typ 4 sterownika) jdbc:db2:database (Typ 2 sterownika) 2. MS/SQL Server/Sybase: jdbc:sqlserver://server:port;databasename=database (MS/SQL 2005, sterownik Microsoftu) jdbc:microsoft:sqlserver://server:port;databasename=database (MS/SQL 2000, sterownik Microsoftu) 3. mysql: 3

jdbc:mysql://server:port/database 4. Oracle: jdbc:oracle:thin:@//server:port/service (Typ 4 sterownika) jdbc:oracle:thin:@server:port:sid (Typ 4 sterownika) jdbc:oracle:oci:@//server:port/service (Typ 2 sterownika) jdbc:oracle:oci:@server:port:sid (Typ 2 sterownika) 5. PostgreSQL: jdbc:postgresql://server:port/database server adres serwera port port na którym nasłuchuje serwer database nazwa bazy danych Metoda getconnection zwraca obiekt klasy implementuj cej interfejs Connection, który reprezentuje nawi zane poł czenie. Je eli nawi zanie poł czenia nie powiedzie si, zostanie zgłoszony wyj tek SQLException. Zapytania Klasa Statement odpowiada za przesyłanie wszelkich zlece operacji SQL do bazy danych. Obiekt klasy Statement tworzony jest w oparciu o wcze niej ustanowione poł czenie z baz danych. Statement nie posiada samodzielnego konstruktora, nowy obiekt jest zwracany przez metod createstatement(): Connection con = DriverManager.getConnection (...) Statement stmt = con.createstatement(); Wszystkie operacje zwi zane z baz danych wykonuje si poprzez utworzony obiekt (mo na utworzy wi cej ni jeden obiekt klasy Statement). Jest to jedyna metoda, by zło y kolejne zapytanie podczas przegl dania wyników poprzedniego. JDBC rozró nia trzy odmienne kategorie zlece do bazy danych. Kategorie te reprezentuje klasa Statement i jej dwie podklasy: PreparedStatement oraz CallableStatement. Statement Do wykonywania operacji na bazie danych słu bezpo rednio trzy metody klasy: executequery(query) u ywana jest do składania zwykłych zapyta SQL rozpoczynaj cych si od słowa SELECT. W wyniku wykonania metody otrzymujemy list wierszy opakowan w obiekt klasy ResultSet (nigdy nie otrzymamy null). 4

executeupdate(query) u ywana jest do wykonywania operacji: insert, update i delete, a tak e operacji DDL (Data Definition Language): create table, drop table, czy te alter table. W wyniku zwraca pojedyncz liczb, okre laj c liczb wierszy tabeli, której dotyczyło zapytanie. execute(query) u ywana jest rzadko, wsz dzie tam, gdzie w wyniku otrzymujemy wi cej ni jedn list wierszy lub wi cej ni jedn liczb zmodyfikowanych wierszy query - tre (String) zapytania dowolna, poprawna składniowo konstrukcja j zyka SQL Trzeba pami ta, e wykonanie powy szych operacji spowoduje zamkni cie obiektu ResultSet otwartego w trakcie analizy zapytania. Pomini cie tego faktu, prowadzi do wielu bł dów. Je eli w trakcie obróbki wyniku zapytania chcemy wykonywa kolejne operacje na bazie danych, nale y utworzy osobny obiekt Statement i z nim skojarzy nast pne zapytanie. ResultSet Klasa ResultSet reprezentuje podstawow struktur danych wynikowych dla zapyta SQL. Udost pnia ona metody pozwalaj ce na przetwarzanie otrzymanych danych. Obiekt klasy ResultSet otrzymujemy w wyniku wykonania metody: executequery(). Aby uzyska warto i tej kolumny danego wiersza stosujemy metod gettyp (i) (Typ typ warto ci np. Int). Do nast pnego wiersza przesuwamy si korzystaj c z metody next(), uprzednio sprawdziwszy, czy nast pny wiersz istnieje (hasnext()). Przykładowy schemat analizy wyników zapytania: Je eli pracujemy w trybie autocommit (transakcyjno ), zapytanie zostaje zatwierdzone dopiero po wykonaniu całej transakcji i zamkni ciu obiektu ResultSet (close()). Ma to du e znaczenie w przypadku operacji insert/update/delete. Po li cie wyników mo na si porusza tylko w jednym kierunku do przodu. Aby umo liwi elastyczne poruszanie si po li cie wierszy wprowadzono nast puj ce rozszerzenia klasy ResultSet: ScrollableResultSet Klasa umo liwia elastyczne poruszanie si po otrzymanej li cie wierszy oraz pozwala na modyfikacje tabeli w trakcie przegl dania wyników zapytania. 5

O rodzaju zwracanego obiektu (wybór pomi dzy klas ResultSet a ScrollableResultSet) decyduje metoda tworz ca kontener Statement. U ycie bezparametrowego wywołania createstatement() jest rozwi zaniem standardowym. Natomiast zastosowanie createstatement (int jaki_rezultat, int jaka_wspołbiezno ) tworzy kontener zdolny do tworzenia elastycznych wyników. Pierwszy argument decyduje o mo liwo ci dwukierunkowego przewijania kursora oraz reakcji na zmiany dokonane w bazie danych po pobraniu danych. Dopuszczalne s trzy stałe: TYPE_FORWARD_ONLY - brak mo liwo ci cofania kursora (podstawowa) TYPE_SCROLL_INSENSITIVE - dowolno w poruszaniu si po kursorze, wł cznie z przemieszczaniem do dowolnego wiersza. Zmiany zaistniałe w bazie danych po wykonaniu zapytania nie wpływaj na zawarto kursora. TYPE_SCROLL_SENSITIVE - poruszamy si jak w poprzednim przypadku, dodatkowo zmiany w bazie danych s odnotowywane przez kursor (najbardziej elastyczne rozwi zanie). Drugi argument metody okre la poziom współbie no ci (mo liwe s dwie stałe): CONCUR_READ_ONLY - działa w parze z opcj TYPE_FORWARD_ONLY (podstawowa) CONCUR_UPDATABLE - pozwala u ytkownikowi na wykonywanie tzw. programowych operacji zapisu/modyfikacji/usuni cia danych znajduj cych si bezpo rednio w bazie danych. Pozwala m.in. na obudowywanie kursorów warstw prezentacyjn (formatka). PreparedStatement Dla usprawnienia procesu przesyłania danych wprowadzono mechanizm wst pnego przetwarzania zapyta. Zapytanie, po przesyłaniu do bazy danych, jest prekompilowane i od tego momentu u ytkownik nie musi go przesyła po raz kolejny. Zastosowania tego mechanizmu ograniczaj si do w skiego zakresu przypadków: tre zapytania nie zmienia si w czasie - zapytanie jest wielokrotnie ponawiane (procedura bezparametrowa) zapytanie jest przetwarzane bardzo cz sto, jego tre mo na rozs dnie sparametryzowa W obu przypadkach mo na u y osadzonych w SZBD, prekompilowanych zapyta. U ycie zapyta prekompilowanych polece do aktualizacji danych: 6

Procedury Sekwencje rozszerzaj ce JDBC umo liwia korzystanie z funkcji skalarnych wbudowanych w SZBD. Sterowniki spełniaj ce warunki zgodno ci z JDBC musz zapewnia poprawno działania z funkcjami skalarnymi, o ile odpowiadaj cy im SZBD funkcje te udost pnia. Z uwagi na ró norodno wywoła funkcji u ró nych producentów baz danych, JDBC wprowadziło tzw. sekwencje rozszerzaj ce (escape sequences) - składniowe ramy dla wywoła funkcji i procedur składowanych, przekazywania daty, czasu itp. Wywołanie funkcji opatrzone jest nast puj c klauzul : {fn <nazwa_funkcji ()>} np. SELECT {fn concat (string, "napis")} FROM... Sekwencje rozszerzaj ce okre laj tak e sposób wywołania i przekazywania parametrów dla procedur składowanych. Procedury składowane Poza funkcjami skalarnymi, JDBC umo liwia wykorzystanie procedur składowanych (stored procedures) - procedur i funkcji zgromadzonych po stronie SZBD. Wołanie procedur oraz przekazywanie parametrów (w obu kierunkach) okre laj reguły składniowe sekwencji rozszerzaj cych. No nikiem dla zapyta zawieraj cych wywołania procedur s obiekty klasy CallableStatement, stanowi cej rozszerzenie klasy Statement. Po utworzeniu obiektu wspomnianej klasy nale y przygotowa tre zapytania:? = call nazwa_procedury (?? ) Znaki zapytania odpowiadaj zmiennym przekazywanym procedurze. JDBC dopuszcza zmienne trzech typów (koncepcyjnych): IN - warto ci zmiennych przekazywane s procedurze. OUT - z argumentem wi emy zmienn programu - po wykonaniu procedury zmienna b dzie miała odpowiednio zmodyfikowan warto. INOUT - argument spełnia obie powy sze role. Przykład: CallableStatement cs = con.preparecall (" {? = call nazwa_procedury (??)} "); cs.registerparameterout (1, Types.INTEGER); cs.setstring (2, "arg_napisowy"); cs.setstring (3, "2_arg_napisowy"); cs.registerparameterout (3, Types.STRING); cs.execute (); int wynik = cs.getint (1); String arg_2 = cs.getstring (3); Operacje Grupowe Wersja 2.0 JDBC wprowadza poj cie operacji grupowych (batch updates). Umo liwiaj one zestawienie wielu zapyta do bazy danych i wykonanie ich jednorazowo. Poszczególne 7

sterowniki JDBC nie musz wspiera tego rozwi zania, ani zapewnia istotnej poprawy wydajno ci. Sprawdzenie, czy dany sterownik implementuje operacje grupowe odbywa si poprzez wywołanie metody: DatabaseMetaData.supportsBatchUpdates(); Zarz dzanie zapytaniami wchodz cymi w skład operacji grupowej odbywa si poprzez zestaw metod klasy Statement: addbatch("tresc_zapytania") - dodanie cz stkowego zapytania clearbatch() - usuni cie wszystkich zapyta wchodz cych w skład jednej grupy executebatch() - wykonanie zbiorowego zapytania - w wyniku otrzymujemy tablic liczb całkowitych, które odpowiadaj kodom wykonania ka dego cz stkowego zapytania Wyst pienie bł du podczas wykonania cz stkowego zapytania powoduje podniesienie wyj tku BatchUpdateException(). Jego obsługa wi e si m.in. z analiz wynikowej tablicy kodów, dost pnej poprzez wywołanie metody getupdatecounts(). Wyj tki, ostrze enia i skracanie danych Wi kszo metod udost pnianych przez JDBC zmusza u ytkownika do obsługi wyj tków. Wyj tki te - obiekty klasy SQLException - opisuj bł dy zgłaszane przez baz danych oraz sam sterownik JDBC. JDBC udost pnia tak e mechanizm powiadamiania o sytuacjach, który nie kwalifikuj si do miana bł du, cho informacja o ich zaj ciu mo e by kluczowa dla poprawnego działania aplikacji. Klas opisuj c wspomniany mechanizm jest SQLWarning. Warto pami ta, e po ka dej aktualizacji danych (wykonanie zapytania, pobranie wiersza itp.), informacja o wcze niejszych ostrze eniach jest bezpowrotnie tracona. Je eli w wyniku wykonania operacji bazodanowej rozmiar zwracanych danych przekracza ustalone granice, mo e doj do ich automatycznego skrócenia (data truncation). Informacja o obci ciu danych pobieranych z bazy jest składowana w postaci obiektu klasy DataTruncation, która z kolei jest podklas SQLWarning. W przeciwie stwie do operacji odczytu, skrócenie danych podczas zapisywania informacji do bazy powoduje wygenerowania wyj tku. Bibliografia: http://stencel.mimuw.edu.pl/abwi/20011218.b.jdbc/ http://wazniak.mimuw.edu.pl/images/0/00/bd-1st-2.4-lab10.tresc-1.1-kolor.pdf 8