BD-1st-2.4-lab10.tresc-1.1-Slajd34

Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania

SQLJ

SQLJ


Na zakończenie ćwiczenia omówimy państwu w ogólny sposób oparty na JDBC standard SQLJ i pokażemy przykład jego zastosowania. Ponieważ SQLJ jest rozwiązaniem wspieranym przez niewielką liczbę producentów, nie przedstawimy żadnych zadań demonstrujących użycie tego standardu. SQLJ jest standardem złożonym z trzech części. Część pierwsza opisuje sposób zagnieżdżania poleceń SQL w kodzie programu napisanego w języku Java. Część druga opisuje sposób składowania w bazie danych procedur i funkcji napisanych w języku Java. Część trzecia opisuje sposób składowania typów języka Java jako obiektów w bazie danych. Z naszego punktu widzenia najciekawsza jest pierwsza część tego standardu.

W standardzie zdefiniowano składnię, której można użyć aby zagnieździć polecenia SQL wewnątrz kodu w języku Java. Tak napisany program nie nadaje się oczywiście do kompilacji przez standardowy kompilator języka Java. Dlatego też stosuje się specjalne narzędzie, które całą składnię charakterystyczną dla SQLJ transformuje do standardowych wywołań JDBC. Tak przetransformowany plik można następnie poddać kompilacji za pomocą zwykłego kompilatora języka Java. Zaletą tego rozwiązania jest krótszy kod obsługujący komunikację z bazą danych, oraz kontrola typów zwracanych wartości wykonywana przez program dokonujący transformacji kodu zgodnego z SQLJ do czystego kodu w języku Java.

Na slajdzie pokazano przykładowy program, który wykorzystuje składnię SQLJ do wykonania prostego zapytania. Programy wykorzystujące SQLJ muszą importować zawartość pakietu „java.sql” i klasę „oracle.sqlj.runtime.Oracle” (1). Na przykładzie (2) pokazano deklarację typu iteratora, który zostanie użyty, w celu odczytania wyniku zapytania. Zapytanie, które będziemy wykonywać zwraca tylko jeden atrybut typu łańcuchowego – nazwisko. Na przykładzie (2) pokazano sposób nawiązania połączenia z SZBD. Połączenie nawiązuje się za pomocą statycznej metody „connect” klasy „Oracle”. Parametry tej metody są analogiczne do parametrów metody „getConnection” klasy „DriverManager”. Przykład (4) pokazuje faktyczne wykonanie zapytania. Najpierw deklarowana jest zmienna zadeklarowanego wcześniej typu, a następnie wykonywane jest faktyczne zapytanie, którego wynik jest przypisywany do nowo zadeklarowanej zmiennej. Ostatecznie, za pomocą metody „next” otrzymanego w wyniku zapytania iteratora (metoda ta działa analogicznie do metody „next” w JDBC) odczytujemy i wypisujemy na konsoli kolejne odczytywane z bazy danych nazwiska. Jak łatwo zauważyć, zadeklarowana nazwa atrybutu w iteratorze, przełożyła się na jego metodę, która zwraca odpowiednią wartość. Bazę danych zamykamy za pomocą statycznej metody „close” klasy „Oracle” (5).


Pełny kod programu, którego fragmenty przedstawiono na slajdzie, załączono do kursu w pliku JDBCELearning11.sqlj.

W celu wykonania przykładowego programu, prócz standardowego pliku JAR ze sterownikiem JDBC, należy umieścić również w CLASSPATH następujące pliki JAR, które można pobrać ze strony Oracle’a:

- Runtime12.jar,

- Translator.jar.



<< Poprzedni slajd | Spis treści | Następny slajd >>