JDBC Leksykon kieszonkowy jdbclk

background image

Wydawnictwo Helion
ul. Chopina 6
44-100 Gliwice
tel. (32)230-98-63

e-mail: helion@helion.pl

PRZYK£ADOWY ROZDZIA£

PRZYK£ADOWY ROZDZIA£

IDZ DO

IDZ DO

ZAMÓW DRUKOWANY KATALOG

ZAMÓW DRUKOWANY KATALOG

KATALOG KSI¥¯EK

KATALOG KSI¥¯EK

TWÓJ KOSZYK

TWÓJ KOSZYK

CENNIK I INFORMACJE

CENNIK I INFORMACJE

ZAMÓW INFORMACJE

O NOWOCIACH

ZAMÓW INFORMACJE

O NOWOCIACH

ZAMÓW CENNIK

ZAMÓW CENNIK

CZYTELNIA

CZYTELNIA

FRAGMENTY KSI¥¯EK ONLINE

FRAGMENTY KSI¥¯EK ONLINE

SPIS TRECI

SPIS TRECI

DODAJ DO KOSZYKA

DODAJ DO KOSZYKA

KATALOG ONLINE

KATALOG ONLINE

JDBC. Leksykon
kieszonkowy

Autor: Donald Bales
T³umaczenie: Jaros³aw Gierlicki
ISBN: 83-7361-165-7
Tytu³ orygina³u:

JDBC Pocket Reference

Format: B5, stron: 196

Podrêczny przewodnik dla programistów Javy

JDBC jest jednym z najwszechstronniejszych i najszerzej stosowanych mechanizmów
umo¿liwiaj¹cych nie tylko dostêp do danych z programów napisanych w Javie,
ale równie¿ wykonywanie rozmaitych operacji na bazach danych. Kosztem
wszechstronnoci jest z³o¿onoæ — JDBC implementuje ogromn¹ liczbê klas, interfejsów
i metod, z którymi trzeba siê gruntownie zapoznaæ. Niemo¿liwoci¹ jest zapamiêtanie
ich wszystkich.

„JDBC. Leksykon kieszonkowy” jest podrêcznym leksykonem u³atwiaj¹cym szybkie
odnalezienie opisu ka¿dej z klas, interfejsów czy metod tworz¹cych JDBC API.
Przydaje siê zw³aszcza w sytuacjach, w których wiadomo, co siê chce osi¹gn¹æ
i potrzebna jest informacja na temat metod JDBC, które mog¹ w tym pomóc.

Oprócz opisu API ksi¹¿ka zawiera tak¿e kilka krótkich rozdzia³ów bêd¹cych swego
rodzaju instrukcj¹ obs³ugi JDBC, czyli przypomnieniem, w jaki sposób ³¹czyæ ze sob¹
ró¿ne elementy API w celu uzyskania rozwi¹zañ konkretnych zadañ.

Nie pamiêtasz, jak naraz wykonaæ kilka operacji wstawiania lub modyfikacji lub w jaki
sposób przechowywaæ i pobieraæ wielkie obiekty? Niniejsza ksi¹¿ka na pewno odwie¿y
Twoj¹ pamiêæ.

Donald Bales jest konsultantem do spraw aplikacji komputerowych specjalizuj¹cym siê
w analizie, projektowaniu oraz programowaniu systemów rozproszonych. Posiada
ponad piêcioletnie dowiadczenie w pisaniu aplikacji w Javie operuj¹cych na bazach
danych za pomoc¹ JDBC.

background image

Spis treści

Wprowadzenie......................................................................... 5

Konstrukcje importowania ................................................... 8

Sterowniki JDBC..................................................................... 9

Typy sterowników......................................................................................9
Adresy URL baz danych ..........................................................................10

Ustanawianie połączenia.................................................... 17

Używanie menedżera sterowników.......................................................17
Używanie JNDI..........................................................................................19

Pzeglądanie metadanych bazy danych............................. 20

Dynamiczne wykonywanie polceń SQL........................... 21

Wykonywanie konstrukcji DDL .............................................................21
Wykonywanie konstrukcji INSERT, UPDATE oraz DELETE ...........22
Wykonywanie konstrukcji SELECT.......................................................23

Wykonywanie prekompilowanych poleceń SQL............ 25

Wykonywanie procedur osadzonych................................. 27

Otrzymywanie wyników zapytań..................................... 29

Przeglądanie zbioru wynikowego .........................................................31
Pobieranie wartości z kolumn ................................................................32
Wstawianie, modyfikowanie i usuwanie wierszy
za pomocą zbioru wynikowego .............................................................33
Dynamiczne określanie charakterystyki zbioru wynikowego ..........35

Mapowanie typów danych SQL i Javy............................ 38

background image

Obsługa wartości NULL ..................................................... 38

Wykrywanie wartości NULL za pomocą metody wasNull().............40
Wykrywanie wartości NULL za pomocą obiektu BigDecimal..........41
Ustawianie wartości w kolumnie jako NULL......................................42

Wstawianie i modyfikowanie grupowe ........................... 42

Praca z wielkimi obiektami ............................................... 44

Wstawienie obiektu BLOB ......................................................................45
Pobranie obiektu BLOB ...........................................................................46

Typy danych definiowane przez użytkownika............... 47

Tworzenie klas Javy dla typów UDT.....................................................48
Aktualizowanie mapy typów .................................................................50
Wstawianie typów UDT...........................................................................51
Pobieranie typów UDT.............................................................................52

Zestawy wierszy................................................................... 53

Składnia wyrażeń przenośnych.......................................... 54

Zarządzanie transakcjami .................................................. 57

JDBC API ............................................................................... 57

background image

Dynamiczne wykonywanie poleceń SQL

21

Dynamiczne wykonywanie
poleceń SQL

Za pomocą obiektu

można dynamicznie wykonać kon-

strukcje DDL SQL lub DML SQL. Obiekt

otzymujemy na

podstawie obiektu połączenia, wywołując jego metodę

w następujący sposób:

Obiekt

posiada trzy metody służące do wykonywania

SQL-a:

,

oraz

. Wybór

odpowiedniej metody zależy od typu konstrukcji SQL, która ma
zostać wykonana.

Wykonywanie konstrukcji DDL

Metoda

jest najodpowiedniejsza dla poleceń DDL czy

całkowicie dynamicznych poleceń SQL. Zwraca ona wartość

,

jeżeli wykonanie konstrukcji SQL spowodowało wygenerowanie
zbioru wynikowego. Zbiór wynikowy można otrzymać wywołując
dla obiektu konstrukcji metodę

!

. Jeżeli metoda

zwróci wartość

"

, można za pomocą metody

#

obiektu

określić liczbę wierszy objętych dzia-

łaniem konstrukcji DML. Jeśli natomiast w trakcie wykonywania
polecenia DDL wystąpi błąd, zostanie zgłoszony wyjątek

. Oto przykład, w którym zostaje utworzona tabela o nazwie

$!%&

(przy założeniu, że połączenie —

— istnieje):

background image

22

JDBC. Leksykon kieszonkowy

!"!#

$%&'#

($%&'#

%#

$%)

"

"'

Wykonywanie konstrukcji INSERT,
UPDATE oraz DELETE

Metoda

nadaje się do wykonywania konstrukcji

DML innych niż konstrukcja SELECT i zwraca liczbę wierszy
objętych działaniem danej konstrukcji SQL. Poniżej przedstawiono
przykład, w którym do tabeli

$!%&

utworzonej w poprzednim

przykładzie zostaje wstawiony nowy wiersz (przy założeniu, że
połączenie —

— istnieje):

()

*+

#

background image

Dynamiczne wykonywanie poleceń SQL

23

#

(#

%#

$

)#

,-,#

,./,#

0,)12'3')3'),4#

,5,

"('*

+,-.(//01+2

+((+2(2++

"

"'

Wykonywanie konstrukcji SELECT

Metoda

zwraca obiekt

!

, co świetnie nadaje

się do wykonywania konstrukcji SQL SELECT. Poniżej przedsta-
wiono przykład zapytania wykonanego dla tabeli

$!%&

(przy

założeniu, że połączenie —

— istnieje):

!

()

6!

background image

24

JDBC. Leksykon kieszonkowy

#

#

(#

%#

(

*%)

(

(22

%3 4*

5 6

"5 7

89

:

%32+;+2

52+;+2

"52+;+2

2+;+2

"

"'

"'

Warto zwrócić uwagę, że w trzech ostatnich przykładach obiekt

był zawsze zamykany. Zamykanie obiektu

background image

Wykonywanie prekompilowanych poleceń SQL

25

zaraz po tym, gdy przestaje on być potrzebny, zmniejsza zużycie
zasobów zarówno w programie klienta, jak i w bazie danych.

Wykonywanie
prekompilowanych poleceń SQL

Wykonywanie konstrukcji SQL przy użyciu obiektów

$

może być bardziej efektywne (z punktu widzenia pro-

gramu klienta oraz bazy danych) oraz łatwiejsze w programowa-
niu. Obiekt

$

można otrzymać z obiektu

#

,

wywołując w następujący sposób jego metodę

:

$

#

#

(#

%#

$

7#

7#

7#

7#

7

Gotowa konstrukcja jest bardziej efektywna, jeżeli można przygo-
tować ją raz, a potem wykorzystywać wiele razy. A łatwiejsza
w programowaniu jest dlatego, że w trakcie tworzenia konstrukcji
SQL uwalnia od obowiązku tworzenia złożonych konkatenacji

background image

26

JDBC. Leksykon kieszonkowy

(sklejeń) łańcuchów znaków oraz od konieczności używania odpo-
wiednich metod formatujących daty. Zamiast tego można jako
oznaczenia miejsc występowania parametrów użyć znaków zapy-
tania (

<

), a następnie przed wykonaniem konstrukcji SQL wartości

tych parametrów ustalić programowo.

Ponieważ klasa

$

jest rozszerzeniem klasy

, posiada jej wszystkie trzy metody uruchomieniowe. Oprócz

tego posiada także zestaw metod typu

===

, które służą do

umieszczania w konstrukcji przed jej wykonaniem konkretnych
wartości w miejscach oznaczonych znakami zapytania — sposób
ich stosowania przedstawiono w poniższym przykładzie. Zało-
żono, że istnieją utworzone w poprzednim przykładzie obiekty
połączenia —

oraz obiekty gotowej konstrukcji —

.

8)#9

9#-

&#./

-:#;$<-$()12'3')3')

=#>

*+

"('*

+,-.( (0//01+2

+((+2(2++

Do znaczników parametrów (

<

) występujących w konstrukcji SQL

metody odwołują się począwszy od numeru 1, a potem kolejno
od lewej do prawej. Tak więc w powyższym przykładzie polu

5

zajmującemu pierwszą pozycję zostaje przypisana wartość

background image

Wykonywanie procedur osadzonych

27

liczbowa 2 (typu

), polu

5

, zajmującemu pozycję drugą,

zostaje przypisana wartość łańcucha znaków

+8%+

itd. Po ustaleniu

wartości wszystkich parametrów konstrukcja zostaje uruchomiona
poprzez wywołanie metody

obiektu

$

. Ponieważ treść konstrukcji SQL została przygotowana

wcześniej, nie jest ona przekazywana jako parametr do żadnej
z metod uruchomieniowych obiektu

$

.

Wykonywanie
procedur osadzonych

Jeżeli pobranie lub zachowanie pewnej jednostkowej ilości danych
w programie wymaga wykonania wielu konstrukcji SQL, wyko-
rzystanie procedury osadzonej jest bardziej efektywne niż kolejne
uruchamianie przez klienta wszystkich koniecznych konstrukcji.
Do uruchomienia procedury osadzonej można użyć obiektu

#

3

. Uzyskuje się go z obiektu

#

, wywołując

w następujący sposób metodę

#

:

#3

?

077#74

Szczegóły dotyczące składni wywoływania procedur osadzo-
nych opisano w rozdziale „Składnia wyrażeń przenośnych”. Klasa

#3

jest rozszerzeniem klasy

$

, stąd

w identyczny sposób ustala się dla niej miejsca występowania
parametrów — za pomocą znaków zapytania (

<

). Jednak tym

razem parametry te mogą być typu wejściowego, wyjściowego

background image

28

JDBC. Leksykon kieszonkowy

lub wejściowo-wyjściowego. Po przygotowaniu wywołania proce-
dury osadzonej, a przed jej uruchomieniem, należy wykonać jesz-
cze następujące czynności:

• Wszystkie parametry wyjściowe muszą zostać zarejestrowane

za pomocą metody

%$

, która pobiera

dwa argumenty. Pierwszy z nich jest pozycją odpowiedniego
znacznika parametru (

<

) w przygotowanym wywołaniu

(1 dla pierwszego znacznika, a następnie kolejno od lewej
do prawej). Drugi parametr jest jedną ze stałych zdefiniowa-
nych w

0>?@

oznaczającą typ, co umożliwia sterow-

nikowi rozpoznanie, jaki rodzaj danych jest zwracany przez
procedurę osadzoną.

• Wartość każdego parametru wejściowego i wejściowo-wyj-

ściowego musi być ustalona za pomocą jednej z funkcji

===

odpowiedniej dla typu danych występujących w bazie.

Na przykład:

#

+<<A<+

)#@!+58?

-9#)'

-&#)'

Do uruchomienia procedury osadzonej należy wykorzystać me-
todę

. Aby pobrać wartość któregoś z parametrów wyj-

ściowych procedury osadzonej, należy w przedstawiony poniżej
sposób użyć jednej z metod

===

obiektu

#3

odpowiedniej dla danego typu danych SQL:

background image

Otrzymywanie wyników zapytań

29

3())

#+<<A<+

%$*A@&B!4#

836A*)

837A*)

* -)

"

"'

Otrzymywanie wyników zapytań

Wyniki wykonania konstrukcji SELECT są zwracane przez metodę

w postaci zbioru wynikowego (

!

). Obiekt

!

prezentuje zbiór wynikowy w postaci tabeli zawierają-

cej wiersze i kolumny. Może on być przeglądany i modyfikowany,
może także być wrażliwy na zmiany w bazie danych (jeżeli ste-
rownik i baza danych oferują taką możliwość dla zapytań).
Domyślnie zbiór wynikowy można przeglądać jedynie w przód,
po jednym rekordzie, wartości w kolumnach nie można mo-
dyfikować, a sterownik nie jest w stanie wykryć zmian zacho-
dzących w bazie danych. Aby stworzyć zbiór wynikowy, który
można przeglądać, modyfikować i który będzie wykrywać zmia-
ny w bazie, należy użyć alternatywnej wersji jednej z metod

#

,

lub

#

obiektu

#

. Metody te pobierają dwa dodatkowe argumenty:

background image

30

JDBC. Leksykon kieszonkowy

(stała współbieżności obiektu

!

)

Określa, czy zbiór wynikowy może być tylko przeglądany,
czy możliwe będzie także dokonywanie za jego pomocą
modyfikacji. Dostępne są dwie wartości stałej tego typu:

#%&#!5!C85%&D

#%&#!5$8C@C,

(stała typu obiektu

!

)

Określa, w jaki sposób można przeglądać zbiór wynikowy
powstały w efekcie wykonania zapytania oraz ustala, czy
sterownik ma wykrywać zmiany w bazie danych doty-
czące rekordów objętych zbiorem wynikowym. Oto dostępne
wartości tej stałej:

@D$5E%!FC!85%&D

Dla zbioru wynikowego przeglądanego tylko w przód,
niewrażliwego na modyfikacje.

@D$5#!%54&&4@4G

Dla zbioru wynikowego przeglądanego dwukierun-
kowo, niewrażliwego na modyfikacje.

@D$5#!%5&4@4G

Dla zbioru wynikowego przeglądanego dwukierun-
kowo, wrażliwego na modyfikacje.

Poniżej przedstawiono przykład utworzenia zbioru wynikowego,
który może być przeglądany, za pomocą którego można mody-
fikować rekordy w bazie i który jest w stanie wykryć zmiany
dokonywane w bazie (przy założeniu, że połączenie —

istnieje):

!

()

background image

Otrzymywanie wyników zapytań

31

??++-A@ABC#

@D?CC8@8E

+5A+2

+5A+2

+"5A+2

+35A+2

+ +2

+"$!%&+2

+(5*+

Przeglądanie zbioru wynikowego

Jeżeli zbiór wynikowy został ustalony jako możliwy do przeglą-
dania tylko w przód, do przesuwania się co jeden wiersz należy
używać metody

. Zazwyczaj ta operacja wykonywana jest

w pętli o na przykład takiej strukturze (przy założeniu, że połą-
czenie —

— istnieje):

!

()

++

*%0

4

background image

32

JDBC. Leksykon kieszonkowy

Jeżeli zbiór może być przeglądany dwukierunkowo, do ustawia-
nia pozycji kursora można używać jednej z następujących metod:

3

,

"

,

,

,

>

oraz

>

. Nie-

zależnie od tego, czy zbiór można przeglądać jedno- czy dwukie-
runkowo, bieżącą pozycję kursora można określić za pomocą jed-
nej z metod:

C"

,

,"E

,

E

,

lub

!(

.

Pobieranie wartości z kolumn

Bez względu na rodzaj zbioru wynikowego, do pobrania wartości
z określonej kolumny służy jedna z metod

===

odpowiednia

dla typu danych SQL przechowywanych w kolumnie. Pierwszym
argumentem metody jest indeks kolumny, który jest względną
pozycją kolumny w konstrukcji SQL (1 dla pierwszej, a następnie
kolejno od lewej do prawej). Poniżej przedstawiono przykład (przy
założeniu, że połączenie —

— istnieje):

4)

&

"&

0>?838

()

!

+5A+2

+5A+2

+"5A+2

+35A+2

+ +2

+"$!%&+2

+(5*+

(

background image

Otrzymywanie wyników zapytań

33

(22

8 8)

9

( &

%- -:

=

"

"'

"'

W powyższym przykładzie zmiennej

4

typu

zostaje

przypisana wartość znajdująca się w kolumnie

5

zbioru

wynikowego. Kolumna ta występuje w zbiorze wynikowym jako
pierwsza, stąd w wywołaniu metody

4

podanym indeksem

jest liczba 1. Zmiennej

&

typu

przypisana jest wartość

z kolumny

5

, pobrana ze zbioru wynikowego za pomocą

metody

, do której jako argument przekazano wartość 2.

Wstawianie, modyfikowanie i usuwanie
wierszy za pomocą zbioru wynikowego

Jeżeli utworzony zbiór wynikowy umożliwia modyfikację, można
za jego pomocą wstawiać nowe wiersze, modyfikować wartości
w istniejących wierszach, a także usuwać wiersze.

background image

34

JDBC. Leksykon kieszonkowy

Wstawienie nowego wiersza do modyfikowalnego zbioru wyni-
kowego wymaga najpierw przeniesienia kursora do roboczego
obszaru zwanego

(tam tworzy się nowy wiersz) za

pomocą metody

>@4!(

. Następnie, za pomocą metod

z rodziny

===

, należy ustalić wartości w poszczególnych

kolumnach. Właściwego wstawienia wiersza do tabeli dokonuje
się przy użyciu metody

!(

. Na końcu trzeba z powrotem

ustawić kursor na rekordzie, na który wskazywał przed rozpo-
częciem wstawiania — służy do tego metoda

>@#!(

.

Aby zmodyfikować wiersz istniejący w zbiorze wynikowym,
trzeba najpierw ustawić kursor na żądanym rekordzie, a następ-
nie za pomocą metod

===

wpisać do niego nowe wartości.

Modyfikacji wiersza w tabeli dokonuje metoda

!(

.

Przed usunięciem istniejącego wiersza poprzez zbiór wynikowy
trzeba ustawić na wybranym wierszu kursor, a następnie wywołać
metodę

!(

.

Poniższy przykład obrazuje wykonanie tych trzech operacji (przy
założeniu, że połączenie —

— istnieje):

!

!#%&#!5$8C@C,A

!@D$5#!%5&4@4G

+5A+2

+5A+2

+"5A+2

+35A+2

+ +2

+"$!%&+

HHF((I

$@8*

8)#&

background image

Otrzymywanie wyników zapytań

35

9#-+F/

&#CAD

:

=

*

$@?*

HHJ"/((I

)

9#-+F/

*

HHK(I

)

*

"

"'

"'

Dynamiczne określanie
charakterystyki zbioru wynikowego

Do określania charakterystyki zbioru wynikowego w trakcie
wykonywania programu służy klasa

!B8

. Istnieje

wiele sytuacji, w których może pojawić się konieczność określenia

background image

36

JDBC. Leksykon kieszonkowy

cech otrzymanego zbioru. Na przykład, po wykonaniu dynamicz-
nej konstrukcji

#@

, za pomocą obiektu

!B8

można

ustalić, co tak naprawdę ta konstrukcja zwróciła.

Poniżej przedstawiono sposób uzyskiwania obiektu

!B

8

dla bieżącego zbioru wynikowego za pomocą metody

B8

(przy założeniu, że połączenie —

— istnieje):

)

!

5-

+5A+2

+5A+2

+"5A+2

+35A+2

+ +2

+"$!%&+2

+(5*+

(

(22

"(*

5-

##

"L)

"*M22

"L*

+;+2

#&

#&

++

background image

Otrzymywanie wyników zapytań

37

"L)

"*M22

"L*

+;+2

++

Korzystając z obiektu

!B8

, program najpierw okre-

śla liczbę kolumn ujętych w zapytaniu SQL. Następnie, podczas
przetwarzania pierwszego wiersza zbioru wynikowego, wypi-
suje nagłówki kolumn, używając nazw występujących w bazie
danych. Potem program wyświetla kolejno wartości z poszcze-
gólnych wierszy. Informacje na temat wszystkich możliwości
obiektu

!B8

znajdziesz w podrozdziale „ResultSet-

MetaData” w rozdziale „JDBC API”.


Wyszukiwarka

Podobne podstrony:
jdbc leksykon kieszonkowy SNFYX42YOKCQZYEXMLB2I4WM3ZGO7L2EYXKIJGQ
JDBC Leksykon kieszonkowy
JDBC Leksykon kieszonkowy 2
JDBC Leksykon kieszonkowy
Bios Leksykocn Kieszonkowy (Helion)
excel leksykon kieszonkowy 24YXXFYJSS4V2JUSSIS2SMK2G7N4YKZ2T7VYP4I
OpenGL Leksykon kieszonkowy opgllk
Elektronika Leksykon kieszonkowy eleklk
Fotografia cyfrowa Leksykon kieszonkowy(1)
Oracle RMAN Leksykon kieszonkowy orrmlk
(ebooks pl) word leksykon kieszonkowy RXYMFZS4VGHRGVQLBHRZ7L4CTHTFMIFVT2D2U2I
C Leksykon kieszonkowy
BIOS Leksykon kieszonkowy Wydanie III biosl3
Fotografia cyfrowa Leksykon kieszonkowy
Oracle RMAN Leksykon Kieszonkowy
Niederst J HTML Leksykon Kieszonkowy
PHP4 Leksykon kieszonkowy

więcej podobnych podstron