W tym artykule przedstawie działanie technologii ADO na konkretnym przykładzie, dlatego osoba chcąca przetestowac to rozwiązanie musi posiadać kilka juz przygotowanych rzeczy:
1.Baza danych np. MySQL (może być jakakolwiek poniewaz będziemy uzywac uniwersalnych sterowników ODBC o których za chwile)
2.Sterownik ODBC do naszego typu bazy.
3.Utworzony i skonfigurowany DSN (źródło danych uzytkownika)
Jeśli wszystkie warunki zostały spełnione mozemy przejść do nastepnego etapu a mianowicie projektowania aplikacji. Otwórz środowisko BCB i ułóz na nim komponenty z palenty ADO: -TADOConnection -TADOCommand -TADODataSet
Omówie teraz każdy z tych elementów
TADOConnection:
-ta klasa jest uzywana głównie do jednego celu, do łaczenia z bazą danych. Odpowiada za nia właściwość ConnectionString. Po kliknieciu jej dwukrotnie otwiera sie kreator ciągu połączenia. Mamy do dyspozycji dwie opcje możemy uzyc plikowej wersji bądz zbudowac ciąg połączenia samodzielnie. Wybieramy ten drugi wariant (domyślnie zaznaczony). Po kliknieciu na build możemy wybrac sobie "Dostawce" czyli sterownik naszej bazy który będzie pośredniczył w operacjach na bazie. Dodatkowo parametry połaczenia oraz inne zaawansowane opcje. Jesli mamy utworzone źródło danych to nie trzeba robic nic więcej jak tylko przejś cna zakładke połacznie i w opcji "Uzyj źródła danych" wybrac odpowiednie źródło, dla pewności przetestowac połaczenie oraz zastosowac zmiany, klikając OK. UWAGA. Każdy komponent z "rodziny" ADO może sie obejśc bez TADOConnection, ponieważ każdy z nich posiada własny modól połaczenia, zaleca się jednak stosowanie oddzielnego komponentu odpwiadajacego za właściwosci połaczenia, które z kolei udostepniane sa każdemu innemu tego wymagającego.
-istotna opcja jest LoginPrompt, ustawiona na true, spowoduje przed uruchomieniem programu wyświetlenie okna dialogowego pytającego uzytkownika aplikacji o podanie loginu i hasła dostepowego do bazy danych, to rozwiązanie może być uzyteczne jeśli rzeczywiście potrzebujemy autoryzacji, jednak w większości przypadków jest to bez celowe oraz drażniące, dlatego zalecam ustawienie własciwości na true tylko wtedy jesli jest to naprawde potrzebne.
TADOCommand
-Komponent ten bedzie potrzebny do wykonywania poleceń (z ta nazwa command) do bazy danych, np INSERT, UPDATE, DELETE itd. Zo co odpowiada właściowść CommandText gdzie wporowadza się całe zapytanie, oczywiście najczesciej dokonuje się tego w czasie wykonywania aplikaji.
-dla komponentu trzeba wybrac połączenie, jak już pisałem wczesniej kazdy komponent z rodziny ADO ma swój własny modół połączenia, jednak w naszym przypadku lepiej wykorzystac juz utworzone połaczenie ADOConnection, poprostu wybieramy komponent ADOConnection we właściwości Connection.
TADODataSet
-Komponent ten służy do "wyciągnięci" konkretnej tabeli z bazy danych, w tym komponencie najwazniejsza własciwościa będzie CommandText, tak samo jak w ADOCommand, jednak zapytanie które sie wykorzystuje tutaj to SELECT. możemy uruchomic kreator i wybrac jakie maja byc pobrane pola z tabeli która mamy w bazie z która sie łączymy.(oczywiście musimy mieć w naszej bazie jakies tabele) przykładowe zapytanie mogło by wyglądac SELECT * FROM tabela, co oznacza pobranie wszystkich koleumna z tabeli o nazwie "tabela".
-Właściwości Connection i ConnectionString maja ten sam cel jak w ADOCommand, i równiez nalezy odowałc sie do juz utworzonego komponentu ADOConnection.
Uruchomienie całości aby zaczeła funkcjonowąć polega na ustawieniu właściwości Active komponentu ADODataSet na true.
1 2 3 4 5 6
| void __fastcall TForm1::Button1Click(TObject *Sender) { ADODataSet1->Active=true; }
|
Jednak zanim wszystko załączymy utworzymy przykładowa baze danych aby mozna było coś do niej zapisać. Utwórzmy ja wg schematu np. poprzez phpmyadmin
1 2 3 4 5 6 7 8 9
| CREATE TABLE dane( id int(11) DEFAULT '0' NOT NULL auto_increment, imie char(30), nazwisko char(30), UNIQUE id(id), PRIMARY KEY (id) );
|
To jednak nie wszystko. W naszym programie nic nie prezentuje danych, musimy więc uzyc jakiegoś komponentu który będzie prezentował dane. Z zakładki DataControls wybieramy komponent TDBGrid, i układamy go na formie a z zakładki DataAccess wykorzystamy TDataSource. Dla komponenty DBGrid1 wybieramy w właściowści DataSource komponent DataSource1, a w komponencie DataSource1 jako DataSet wybieramy komponent DataSource1. W DataSet1 w CommandText wpisujemy SELECT * FROM dane. Treaz po skompilowaniu i uruchomieniu aplikacji , gdy ustawimy właściwosć Active na true ukaze nam sie zawartość tabeli dane w DBGrid1.
No koniec artykułu przedstawie jak można coś zapisac do bazy. Uwtórzmy dodatkowo 2 pola Edit i opiszmy je Labelami kolejna "imie" i "nazwisko" oraz Button "dodaj". Przejdzmy do kodu Button1 i wpiszmy nastepujący kod.
1 2 3 4 5 6 7 8 9 10 11
| if(DataSet->Active==true) { DBGrid1->DataSource->DataSet->Last(); int id=DBGrid1->DataSource->DataSet->Fields->Fields[0]->AsInteger+1; ADOCommand1->CommandText="INSERT INTO dane VALUES('"+String(id)+"','"+Edit1->Text+"','"+Edit2->Text+"')"; ADOCommand1->Execute(); } else MessageBox(NULL, "Baza zamknięta", "Bład zapisu do bazy", MB_OK|MB_ICONERROR);
|
Powyższy kod powoduje sprawdzenie czy tabela jest otwarta w przciwnym razie pokazuje sie bład. Pózniej przechopdzi do ostatniego rekorsu, odczytuje z pierwszej kolumny ostatniego wiersza komórke jako wartość całkowitą i dodaje do niej 1. Poźniej zostaje przygotowane zapytanie SQL które powoduje zapisanie do bazy wartości id, Edit1->text oraz Edit2->Text. To wszystko w tym artykule w kolejnych bardziej zaawansowane zagadnienia.
|