Javne dane

Java jako nowoczesny język programowania umożliwia tworzenie aplikacji bazodanowych. Różnią się one jednak od podobnych aplikacji napisanych w innych językach programowania. Czym? Przede wszystkim uniwersalnością - można je, tak jak zwykłe aplikacje Javy, przenosić na różne platformy i korzystać z dowolnych baz danych.

Java jako nowoczesny język programowania umożliwia tworzenie aplikacji bazodanowych. Różnią się one jednak od podobnych aplikacji napisanych w innych językach programowania. Czym? Przede wszystkim uniwersalnością - można je, tak jak zwykłe aplikacje Javy, przenosić na różne platformy i korzystać z dowolnych baz danych.

Połączenia z bazami danych w Javie odbywają się za pośrednictwem JDBC (Java DataBase Connectivity), czyli specjalnego API udostępnianego przez biblioteki Javy do obsługi baz danych. Aby z punktu widzenia aplikacji sposób dostępu był niezależny od bazy danych, JDBC musi na siebie przejąć zadanie komunikacji z różnymi bazami. Realizuje to za pomocą sterowników, czyli klas implementujących interfejs JDBC do konkretnej bazy danych.

Sterowniki JDBC mogą być napisane całkowicie w Javie i w związku z tym łatwo przenośne lub współpracować z elementami właściwymi dla danej platformy uruchomieniowej. Sterowniki napisane w Javie mogą komunikować się bezpośrednio z bazą danych za pomocą jej własnych protokołów lub wykorzystywać standardowe protokoły komunikacyjne do nawiązywania połączeń z serwerami pośredniczącymi, które w ich imieniu będą komunikować się z bazami danych. Natomiast sterowniki zależne od platformy uruchomieniowej to albo hybrydy używające fragmentów kodu natywnego ze względu na wydajność, albo interfejsy do lokalnych sterowników ODBC (Open DataBase Connectivity), tzw. mostki JDBC-ODBC.

Instalacja sterownika

Okno aplikacji z tabelą umieszczoną w przewijanym panelu JScrollPane.

Okno aplikacji z tabelą umieszczoną w przewijanym panelu JScrollPane.

Ponieważ nasz program będzie korzystał z relacyjnej bazy danych MySQL, wykorzystamy MySQL Connector/J - sterownik napisany w Javie, komunikujący się bezpośrednio z bazą danych. Można go ściągnąć wraz z dokumentacją ze strony MySQL AB pod adresem: http://www.mysql.com/downloads/api-jdbc.html . Jest to archiwum .zip, w którym znajduje się plik .jar, w naszym wypadku o nazwie mysql-connector-java-3.1.10-stable-bin. Należy go umieścić w podkatalogu jre\lib\ext katalogu, w którym zainstalowana jest Java. Ponadto należy ustawić ścieżkę dostępu, dodając do zmiennej środowiskowej classpath (ustawia się ją we właściwościach systemu) bezwzględną ścieżkę do pliku ze sterownikiem:

classpath .;C:\j2sdk1.4.2\jre\lib\ext\mysql_connector-java-3.1.10-stable-bin.jar

Powyższa ścieżka definiuje miejsce poszukiwań klas wymaganych przez uruchamianą aplikację, przy czym kropka określa bieżący katalog, a średnik pełni funkcję separatora.

Przygotowanie bazy

Gdy sterownik jest już zainstalowany, możemy uruchomić bazę MySQL i wykonać w niej odpowiednie polecenia tworzące bazę danych oraz tabelę, której będziemy używać z naszego programu. Najprościej w tym celu utworzyć w katalogu bin bazy MySQL zwykły plik tekstowy (np. baza.txt) i umieścić w nim polecenia SQL do wykonania w bazie danych, a następnie w oknie konsoli wpisać polecenie:

mysql -u nazwa_uzytkownika -p < baza.txt

Przed wykonaniem operacji MySQL zapyta o hasło dostępu (odpowiednie konto użytkownika musi już być w bazie danych). Plik baza.txt zawiera instrukcje, które po kolei tworzą bazę, wybierają ją jako aktywną, tworzą tabelę i wstawiają przykładowe wartości:

create database biblioteka;

use biblioteka;

create table ksiazki (

id int unsigned not null

auto_increment primary key

tytul char(20) not null

autor char(30) not null);

insert into ksiazki values(

null,'Lalka', 'Bolesław Prus');

insert into ksiazki values(

null,'Potop', 'Henryk Sienkiewicz');

...

Podstawowy szkielet aplikacji

Projekt składa się z sześciu plików źródłowych .java z implementacjami klas odpowiadających za utworzenie głównego okna aplikacji, dodanie kontrolek oraz zbudowanie menu rozwijanego. Klasę główną stanowi plik Baza1.java:

public class Baza1{

public static void main(String[] args) {

Okno okno = new Okno();

//poniższa funkcja musi być wywołana

//przed pozostałymi metodami

okno.setUndecorated(true);

okno.setLocationRelativeTo(null);

okno.setVisible(true);

}

}

Okno aplikacji z dodanymi obiektami PasekMenu, MenuRoz i ElementMenu.

Okno aplikacji z dodanymi obiektami PasekMenu, MenuRoz i ElementMenu.

To klasa, w której tworzony jest obiekt głównego okna programu, zdefinio-wany w pliku Okno.java. Ponieważ plik znajduje się w tym samym katalo-gu, co główna klasa, nie trzeba go importować. W związku z tym nie umieszczamy również dyrektywy package na początku implementacji klasy Okno. Po utworzeniu obiektu okno wywołujemy metodę setUndecorated() z parametrem true, aby okno nie miało paska tytułu. Poza tym wywołujemy znane już metody: setLocationRelativeTo() umieszczającą okno na środku ekranu oraz metodę setVisible() ustawiającą widoczność okna. Trzeba pamiętać, że metoda setUndecorated() musi być wywołana pierwsza.

Następnie tworzymy panel, który dodamy później do powierzchni okna. Jego implementacja znajduje się w pliku Pane.java:

public class Pane extends JPanel {

public Pane() {

setBackground(new Color(150,200,250));

Border pusta =

BorderFactory.createEmptyBorder(1,1,1,1);

Border wytrawiona =

BorderFactory.createEtchedBorder();

Border krawedzZew = BorderFactory.

createCompoundBorder(wytrawiona,pusta);

Border krawedz = BorderFactory.

createCompoundBorder(krawedzZew,wytrawiona);

setBorder(krawedz);

}

}

Konstruktor klasy Panel nie robi niczego istotnego oprócz określenia wyglądu panelu. Panel jest jednak potrzebny, bo to właśnie do niego będziemy dodawać kontrolki.

Mając gotowy panel, możemy zdefiniować klasę Okno (w pliku Okno.java). W jej konstruktorze za pośrednictwem metody setSize() określamy rozmiar okna na 500 pikseli szerokości i 200 pikseli wysokości, dodajemy panel, a także pierwszą kontrolkę - etykietę z tytułem aplikacji:

public class Okno extends JFrame {

...

public Okno() {

setSize(500,200);

p = new Pane();

etykieta = new JLabel("Moja biblioteka");

p.add(etykieta);

...

}

}


Zobacz również