poniedziałek, 12 listopad 2007

JDBC dla Firebirda czyli Jaybird - konfiguracja i prosty przykład w NetBeans 6.0

Strasznie długo nie pisałem nic na tym blogu :) ale to naprawdę nie wynika z lenistwa tylko z braku czasu, cały czas coś mi wypada i nie mam czasu aktualizować ...

Wiem, że post wcześniej napisałem o JDBC dla Oracla ( pojawi się niebawem ;) ) to z przyczyn formatu nie zdążyłem wgrać jeszcze Oracla.

Aby zrealizować założenia tematu należy zaopatrzyć się w następujące rzeczy :

  • NetBeans 6.0 beta 2 aby pobrać kliknij tutaj
  • Serwer Firebird 2.0 lub nowszy aby pobrać kliknij tutaj
  • Klasę JayBird aby pobrać kliknij tutaj
Zaczynamy :)

Zakładam, że każdy wgrał już sobie środowisko NetBeans oraz serwer firebirda .

Po ściągnięciu klasy JayBirda ( mój plik rar dokładnie się nazwa : Jaybird-2.1.1JDK_1.5 )
rozpakowujemy plik w wybranym miejscu.

Następnie odpalamy NetBeansa i przechodzimy do zaklładki : Services ( Ctrl + 5 ) . Następnie rozwiajamy ( + ) kategorię Databases i następnie na folderze Drivers klikamy prawym myszki wybierając New Driver. Wyskoczy nam okno w którym musimy wskazać plik *.jar sterownika JayBird. Poprzez przcisk Add wskazujemy lokalizację folderu ( u mnie Jaybird-2.1.1JDK_1.5 ) i wybieramy plik : jaybird-full-2.1.1.jar


Klikamy przycisk OK . Mamy już dodany sterownik dla bazy danych Firebird. Klikamy teraz na nowo dodany sterownik :


Musimy ustawić adres url do naszej bazy danych ( moja jest na dysku c:\baza\tester.fdb )
Ogólny format adresu do bazy ma postać :

jdbc:firebirdsql://host:port/db

nawiasy [ , ] oraz < , > należy usunąć i kolejno wpisać :

określenie hosta na którym jest baza w moim przypadku LOCALHOST

: port na jakim działa firebird ( domyślnie 3050 ) jeżeli go nie zmienialiśmy nie trzeba go pisać

adres fizyczny bazy na dysku lub serwerze

tak więc mój adres url do bazy ma postać :

jdbc:firebirdsql://localhost:3050/C:/baza/tester.fdb

po podaniu url podajemy nazwę usera i hasło do bazy u mnie ( sysdba/masterkey ) . Klikamy OK połączenie zostało nawiązane. Teraz możemy przejrzeć naszą bazę danych ( moja ma tylko 1 tabele TEST ) :


OK mam już połączenie na którym sprawdzimy działanie naszego programu testowego który teraz napiszemy :

Tworzymy nowy projekt ( Ctrl + Shift + n ) wybieramy z kategorii Java : New Java Application
ustawiamy nazwę projektu np ( JayBirdTest ) klikamy przycisk Finish i mam już projekt w którym napiszemy naszą aplikację testową.

W pierwszej kolejności musimy dodać do naszego prjektu plik *.jar z klasą do obsługi firebirda ( jaybird-full-2.1.1.jar ) Aby to zrobić klikamy w projekcie na folder Libraries i prawyn myszy Add JAR w okienku wstazujemy lokalizacje pliku który podałem wyżej klikamy Add i już mamy potrzebny plik jar.

Teraz możemy zaimportować potrzebne pakiety czyli :

import org.firebirdsql.pool.FBWrappingDataSource;
import java.sql.*;

Następnie tworzymy obiekt klasy FBWrappingDataSource odpowiadający za źródło danych

FBWrappingDataSource dataSource = new FBWrappingDataSource();



Następnie ustawiamy sterownik dla naszej bazy :

Class.forName("org.firebirdsql.jdbc.FBDriver");

Tworzymy połączenie :

Connection con = DriverManager.getConnection("jdbc:firebirdsql://
localhost:3050/C:/baza/tester.fdb","sysdba","masterkey");


Teraz za pomocą obiektu klasy PreparedStatement przygotowujemy zapytanie :

PreparedStatement stm = con.prepareStatement("insert into Test values(?,?)");

Odrazu rzucaja się w oczy znaki "?" odowiadają one parametrom jakie wstawimy teraz :

stm.setInt(1,99);
stm.setString(2, "JAYBIRD TESTER");
stm.executeUpdate();

metoda setInt(1,99) - ustawia wartość dla pierwszego znaku ? jest to 99
kolejna setString(2,....) - ustawia wartość dla drugiego znaku ?
metoda executeUpdate() - odpala nasze zapytanie ( Transakcja jest autmatycznie popychana do bazy )

i to tyle cały plik main.java można pobrać stąd

Teraz możemy przejść do zakładki Services ( Ctrl + 5 ) wybrać naszą baze i prawym myszki na tabeli kliknąć VIEW DATA zobaczymy :



W kolejnych artach pokażę jak pobierać dane i zapisywać je do kontenerów z użyciem sterownik JayBird .


Pozdrawiam :)

poniedziałek, 29 październik 2007

Mała przerwa :)

Z uwagi na brak czasu - spowodowany nauką i załatwianiem spraw przyjęcia na Politechnikę Białostocką nic nie pisałem na blogu :) ale to się teraz zmieni. Za ok 2-3 dni pojawią się następujące porady :

  • Konfiguracja JDBC dla Oracla 10g pod NeatBeans 6.0 beta
  • Proste programy demonstrujące używanie JDBC dla Oracla 10g w środowisku NeatBeans 6.0 beta

środa, 25 lipiec 2007

FireBird 2.0 - konfiguracja w BDS 2006

Miałem na początku napisać o zamieszczaniu fotek w bazie danych. Jednak w połowie pisania posta na ten temat doszedłem do wniosku, że zacznę od podstaw żeby to wszystko miało jakieś ręce i nogi.

Tak więc zacznę od podpięcia bazy danych FireBird w projekcie C++ Builder 2006. W tym miejscu zakładam, że FireBird jest zainstalowany poprawnie i baza danych jest stworzona. Na początku należy stworzyć nowy projekt i zapisać go na dysk :

1 ) File -> New -> VCL Forms Application - C++ Builder - tworzymy nowy projekt

2 ) File -> Save All - zapisujemy go na dysku

Ok mamy już projekt i możemy zacząć podpinać kontrolki dzięki którym będziemy mogli obsługiwać FireBirda. Oczywiście Borland nie był tak uprzejmy i nie nazwał jednej z zakładek FireBird - jak wiadomo oni używają i promują własne bazy danych InterBase. Jednak FireBird jest darmowym "odgałęzieniem" od InterBase-a i komponentami do jego obsługi są komponenty z zakładki InterBase. Wygląd zakładki dla pewności wrzucam poniżej


Na etapie samej konfiguracji potrzebne będą tylko dwa komponenty :
  • TIBDatabase - umieszczamy w nim inforamcje o położeniu bazy danych. Poprzez ustawienia parametrów w postaci loginu i hasła możemy wyłączyć tzw. LoginPrompt-a który pojawia się domyślnie przed każdą próbą połączenia się z bazą danych.
  • TIBTransaction - udostępnia metody do pracy nad tranzakcjami. Nie będe tu ich wypisywał. Pojawi się to pewnie w kolejnych postach.
Ok to tylko z bardzooooo podstawowego opisu 2 komponentów jakich będziemy używali.

3 ) Umieszczamy komponent TIBDatabase oraz TIBTransaction na formie przechodzimy do Inspektora i ustawiamy poniższe rzeczy.

Dla komponentu TIBDatabase :

a) DataBase - podajemy lokalizację bazy danych.

UWAGA !!! przestrzegam przed stosowaniem "wielkich ścieżek dostępu" tzn plik z bazą danych nie powinien być zagnieżdżony w setnym folderze. C++ Builder 2006 ma tendencje do nie przyjmowania takich ścieżek. Najczęściej informuje nas o tym komunikatem o nieznanej bazie danych. Osobiście wpisuje często taką ścieżkę :

localhost:\NAZWA_BAZY.FDB

W tym przypadku baza danych trzymana jest na dysku C:\ . Jednak nigdy nie miałem okazji ( pewnie lenistwo :P :P ) sprawdzić czy taki zapis będzie działał w przypadku jakiegoś małego zagnieżdżenia lub przeniesienia pliku na inny dysk.


b) Params - wpisujemy dwa parametry dotyczące loginu i hasła dostępu do bazy w moim przypadku są to :

user_name=sysdba
password=masterkey

c) LoginPrompt - zaznaczamy na FALSE. Dzięki wpisaniu parametrów z punku b) nie potrzebujemy już okna weryfikacji danych.

d) DefaultTransaction - należy wskazać komponent TIBTransaction.

e) Connected - zaznaczamy na TRUE . Jeżeli coś będzie nie tak C++ Builder 2006 wyświetli błąd próby połaczenia. Jeżeli nie tzn ,że jest ok ;)


Dla komponentu TIBTransaction :

a) DefaultDataBase - wskazujemy komponent IBDataBase

b) Active - dajemy na TRUE

W moim przypadku wszystko wygląda to tak :




No i to by było na tyle z tytułu konfiguracji FireBirda w środowisku C++ Builder 2006. Nie jest to nic skomplikowanego i więcej zajęło mi napisanie tego posta niż ta robota jest warta. Jednak jak już pisałem na początku chce zacząć od podstaw ;) .

To co pokazałem to podstawa do dalszej zabawy. Oczywiście te połączenia powinny być w odpowiednim miejscu w programie. Ale to już inna bajka :)

wtorek, 24 lipiec 2007

No to start

Nie zamierzam być oryginalny i na wstępie piszę, że pomysł na tego bloga ukradłem od Łukasza ( sorry stary :P ). Po pierwsze nie mam zielonego pojęcia po co zakładam tego bloga - napewno nie jestem na tyle mądry żeby kogoś pouczać z dziedziny programowania czy też elektroniki. Jednak chciałbym mieć takie miejsce gdzie będe mógł zamieszczać informacje na temat moich projektów, pomysłów - a może akurat ktoś zainteresowany tym samym tematem będzie chciał coś wspólnie stworzyć. Czasem zamieszczę rozwiązanie jakiegoś problemu z zakresy programowania w C++ Builder, z którym sam musiałem się zmierzyć, a rozwiązanie którego może pomóc innym w ich zabawie w programistę ;) Na koniec przepraszam wszystkich za ewentualne błędy ort i styl pisania - ale polonistą nigdy nie byłem i nie zamierzam być :)