Delphi __ Kompendium __ Roz16.pdf

(1178 KB) Pobierz
Delphi :: Kompendium :: Roz...
Delphi :: Kompendium :: Rozdział 16 - 4programmers.net http://4programmers.net/Delphi/Kompendium/Rozdzia%C5%82_16
Logowanie | Rejestracja | Forum | Pomoc | Reklama | Szukaj
Strona główna :: Delphi :: Kompendium
Rozdział 16
Copyright © 2000-2006 by Coyote Group 0.9.3-pre3
Czas generowania strony: 0.4138 sek. (zapytań SQL:
12)
Edytuj Historia
Bazy danych BDE
W tym rozdziale skupimy naszą uwagę na tworzeniu aplikacji bazodanowych. Na początek dokonamy krótkiego
przeglądu baz danych, a następnie zajmiemy się tworzeniem aplikacji opartych o technologię BDE ( Borland
Database Engine ).
Spis treści
1 Czym jest baza danych?
2 Typy baz danych
2.1 Lokalne bazy danych
2.2 Bazy danych typu klient-serwer
3 Wielowarstwowość baz danych
4 Bazy danych w Delphi
5 Borland Database Engine
5.1 Sterowniki baz danych
6 Przykładowa baza danych
7 Komponenty bazodanowe
8 Komponent TTable
8.1 TDataSource
8.2 TDataSet
8.3 Komponent TQuery
9 BDE Administrator
9.1 Tworzenie nowej bazy danych
10 Tworzenie bazy w kodzie programu
11 Tworzenie tabel
12 Tworzenie rekordów
13 Odczytywanie wartości z tabeli
14 Przykładowy program korzystający z naszej bazy danych
15 Podsumowanie
W tym rozdziale:
poznasz, na czym polega budowa baz danych;
poznasz znaczenie terminów lokalna baza danych i aplikacje klient-sewer;
nauczysz się wykorzystywać technologię BDE;
napiszesz prosty program korzystający z baz danych.
Czym jest baza danych?
Wiele firm wykorzystuje bazy danych do gromadzenia informacji, gdyż bezwzględnie jest to najlepszy i
najefektywniejszy sposób przechowywania danych ? nie wymagający plików tekstowych, rejestrów czy plików
INI. Sam nie byłem kiedyś skłonny do korzystania z baz danych, lecz gdy poznałem ich funkcje i działanie, nie
potrafiłem już wyobrazić sobie projektowania aplikacji bez ich użycia.
Powiedzmy sobie szczerze: jeżeli nie jesteś zaznajomiony z tematyką baz danych, to słowo to kojarzy Ci się
zapewne ze zbiorem różnych danych ? setkami informacji na temat klientów danej firmy, płac pracowników,
ich adresów itp. Nie jesteś daleki od prawdy; postaram się przybliżyć Ci funkcjonowanie baz danych w Delphi.
Użyjemy do tego mechanizmu firmy Borland ? BDE.
Typy baz danych
Początkującemu użytkownikowi wydaje się, że baza danych to zwyczajny program, który przechowuje gdzieś w
pliku potrzebne informacje i? tyle! W rzeczywistości istnieją bazy lokalne oraz bazy typu klient-serwer.
Lokalne bazy danych
Lokalne bazy danych umieszczone są na jednym komputerze, czyli na tej samej maszynie, na której
uruchomiony jest nasz program. Służą do prostej komunikacji pomiędzy aplikacją a zbiorem danych; używane
są tylko przez naszą aplikację. Przykładem jest program, który przechowuje adresy oraz inne dane
pracowników firmy.
Bazy danych typu klient-serwer
Innym systemem ? nieco bardziej skomplikowanym, lecz bardziej popularnym ? jest architektura baz typu
klient-serwer. Na serwerze znajduje się program, którego zadaniem jest przechowywanie danych, zarządzanie
nimi, a także obsługą aplikacji-klientów. Aplikacja-klient to program, który jest udostępniamy w kilku
egzemplarzach (lub nawet setkach kopii) i służy do komunikacji z serwerem. Klient zadaje serwerowi tzw.
zapytania, które ten interpretuje i zwraca klientowi.
Istnieje wiele zalet takiego rozwiązania ? dostęp do bazy danych ma większa liczba osób, a same dane są
bezpieczniejsze (pod względem możliwości utraty). Zarazem jednak więcej osób ma do nich wgląd.
Tworzeniem takich aplikacji zajmiemy się w kolejnym rozdziale.
Wielowarstwowość baz danych
Być może będziesz miał okazję zetknąć się kiedyś z pojęciem jednowarstwowa baza danych lub podobnym,
1 z 10
2009-03-14 15:50
RSS | Forum | Pastebin |
Regulamin | Pomoc | Usuń
cookies | Prawa autorskie |
Kontakt | Reklama
77982120.010.png 77982120.011.png 77982120.012.png 77982120.013.png 77982120.001.png 77982120.002.png
 
Delphi :: Kompendium :: Rozdział 16 - 4programmers.net http://4programmers.net/Delphi/Kompendium/Rozdzia%C5%82_16
dlatego też wyjaśnię je szczegółowo.
Lokalne bazy danych są nazywane zazwyczaj jednowarstwowymi ? z tego powodu, iż wszelkie operacje są
wykonywane bezpośrednio (program posiada bezpośrednie połączenie z bazą danych).
Dwuwarstwowa baza danych to połączenie z bazą danych za pomocą tzw. sterowników (baza klient-serwer).
Aplikacja używa sterowników, aby połączyć się z serwerem, a ten bierze na siebie odpowiedzialność za
zarządzanie danymi.
Wielowarstwowość to połączenie kilku serwerów. Aplikacje-klienci łączą się z serwerami, które z kolei
odpowiadają za przekazanie danych do serwera głównego.
Bazy danych w Delphi
Wykorzystując tak wspaniałe środowisko, jakim jest Delphi, masz możliwość skorzystania z kilku rodzajów baz
danych:
BDE ? dość skomplikowany mechanizm Borlanda, pozwalający na łączenie się z bazami danych typu
dBase czy Pardox.
ADO ? jest to standard firmy Microsoft, polegający na łączeniu się z bazami danych przy wykorzystaniu
mechanizmu ADO (ActiveX Data Object).
dbExpress ? stosunkowo nowa technologia, pozwalająca na łączenie się z różnymi typami baz danych.
Dużą zaletą jest uniwersalność tego typu baz danych, dostępnych także dla Linuksa.
InterBase ? komponenty tej grupy umożliwiają połączenie się z serwerem bazodanowym firmy Borland ?
InterBase.
W III części tej książki zajmiemy się dwiema najpopularniejszymi metodami dostępu do baz danych ? BDE oraz
dbExpress.
Borland Database Engine
BDE, czyli Borland Database Engine , to zbiór bibliotek DLL i funkcji API, umożliwiających w dość prosty sposób
komunikowanie się z systemami baz danych.
Co prawda BDE jest dołączany do Delphi, lecz stanowi zbiór osobnych bibliotek, umieszczonych w katalogu
Borland Shared/BDE.
Sterowniki baz danych
Już nieraz wspomniałem w tym rozdziale o tzw. sterownikach. W rzeczywistości sterowniki są funkcjami API
dokonującymi operacji na bazach danych. Różne bazy danych, takie jak dBase czy Paradox, posiadają różną
budowę ? sterowniki dokonują ?tłumaczenia? funkcji pisanych w Delphi na ?język? zrozumiały dla bazy danych.
Przykładowa baza danych
Mechanizm BDE udostępnia kilka przykładowych baz danych, aby użytkownik mógł sprawdzić w jak najkrótszym
czasie działanie komponentów. Przeprowadzimy małe ćwiczenie, prezentujące wykorzystanie tych ?gotowców?.
Najpierw udaj się do katalogu, w którym zainstalowane jest BDE (w moim przypadku jest to F:\Common
Files\Borland Shared\Data ) i odszukaj plik country.db . To jest właśnie przykładowa baza danych, z której za
chwilę skorzystamy (rysunek 16.1).
Rysunek 16.1. Pliki bazy danych country
Na rysunku oprócz pliku z rozszerzeniem *.db znajdują się także pliki *.cds oraz *.px, wykorzystywane na
potrzeby samego BDE.
1.
Przejdź do zakładki BDE w palecie komponentów i odszukaj komponent TTable (pierwszy z lewej);
umieść go na formularzu.
2.
Przejdź do zakładki BDE i umieść na formularzu komponent TDataSource (również pierwszy z lewej).
3.
Z listy rozwijalnej komponentu TDataSource wybierz pozycję Table , która określa umieszczony na
formularzu komponent TTable .
4.
Przejdź do zakładki Data Controls i umieść na formularzu komponent TDBGrid ; jego rozmiar dopasuj
według własnych upodobań.
5.
Mając dalej zaznaczony komponent TDBGrid , z listy właściwości kwybierz DataSource (wskazanie
komponentu TDataSource ).
Po tych czynnościach mamy już gotowy interfejs programu. Teraz nadszedł czas na połączenie się z bazą, ale
uprzednio musimy wybrać odpowiednią tabelę.
Ponownie zaznacz komponent TTable ; będziemy musieli wybrać bazę danych, z której będziemy korzystać. Z
listy rozwijalnej właściwości DatabaseName wybierz DBDEMOS ; następnie z listy właściwości TableName wybierz
country.db .
Nadszedł teraz decydujący moment ? wartość właściwości Active zmień na True . W tym momencie komponent
powinien połączyć się z bazą danych, a na komponencie TDBGrid powinny pojawić się wartości odczytane z
owej bazy.
Program w trakcie działania przedstawiony został na rysunku 16.2.
2 z 10
2009-03-14 15:50
77982120.003.png 77982120.004.png 77982120.005.png
Delphi :: Kompendium :: Rozdział 16 - 4programmers.net http://4programmers.net/Delphi/Kompendium/Rozdzia%C5%82_16
Rysunek 16.2. Wartości z bazy danych przedstawione w komponencie TDBGrid
Naturalnie jest to tylko przykład ? w dalszej części rozdziału zajmiemy się tworzeniem własnej bazy danych i
samodzielnym dodawaniem rekordów.
Komponenty bazodanowe
Mimo że nie stworzyliśmy jeszcze prawdziwej aplikacji opartej na bazach danych, tj. nie napisaliśmy ani
jednego wiersza kodu, to wykorzystałeś już w poprzednim przykładzie kilka komponentów. Co prawda przykład
był dość prosty, ale wymagał użycia aż trzech komponentów.
Większość operacji na bazach danych odbywa się dzięki komponentom niewizualnym, aczkolwiek
przedstawienie wyniku tej operacji (dodanie nowego rekordu, odczytanie zawartości tabeli) musi być
przedstawione w postaci wizualnej kontrolki. Owe kontrolki służące do przedstawienia zawartości baz danych są
zamieszczone na palecie Data Controls , a wyróżniają się tym, że ich nazwa poprzedzona jest literami DB. W
poprzednim przykładzie użyliśmy komponentu TDBGrid , który reprezentuje zbiór kolumn i wierszy. Przed
uruchomieniem programu konieczne jest jednak przydzielenie odpowiedniej wartości do właściwości DataSource
(rysunek 16.3).
Rysunek 16.3. Inspektor Obiektów z zaznaczoną właściwością DataSource
Owa właściwość DataSource określa zbiór danych, który ma zostać przedstawiony w komponencie.
Inny przykład znajduje się na rysunku 16.4. Tam bowiem zastosowałem komponenty TDBImage oraz
TDBNavigator .
3 z 10
2009-03-14 15:50
77982120.006.png
Delphi :: Kompendium :: Rozdział 16 - 4programmers.net http://4programmers.net/Delphi/Kompendium/Rozdzia%C5%82_16
Rysunek 16.4. Graficzne przedstawienie wartości z tabeli
W tym przykładzie odczytywana jest tabela animals.db , która posiada kolumnę BMP , zawierającą zdjęcie
wybranego zwierzaka. Graficzne przedstawienie tego zdjęcia wiąże się z wybraniem z właściwości DataField
pozycji BMP jako nazwy kolumny do zaprezentowania.
Komponent TDBNavigate służy do przesuwania się między kolejnymi rekordami tabeli; tutaj także konieczne
jest wybranie odpowiedniej wartości z właściwości DataSource .
Komponent TTable
Komponent TTable jest najprostszym środkiem umożliwiającym dostęp do konkretnej bazy danych oraz tabeli.
Tabela jest uporządkowanym zbiorem kolumn i wierszy.
Główne właściwości oraz metody tego komponentu zostały przedstawione w tabelach 16.1 oraz 16.2.
Tabela 16.1. Główne właściwości komponentu TTable
Właściwość Opis
TableType Typ tabeli (Paradox, dBase, ASCII, FoxPro lub wartość domyślna)
TableName Z lity rozwijalnej możesz wybrać tabelę należącą do określonej bazy danych
ReadOnly Określa, czy tabela ma być tylko do odczytu
DatabaseName Z listy rozwijalnej możesz wybrać bazę danych, z której będziemy korzystać
Exclusive Umożliwia zablokowanie danej tabeli wyłącznie dla naszej aplikacji
Tabela 16.2. Główne metody komponentu TTable
Właściwość Opis
CreateTable Tworzy tabele na podstawie wcześniej podanych informacji
EmptyTable Usuwa wszystkie rekordy z tabeli
DeleteTable Usuwa tabelę całkowicie
RenameTable Zmienia nazwę tabeli
LockTable Blokuje tabelę, tak aby inne aplikacje nie miały do niej dostępu
UnlockTable Odblokowuje tabelę
GotoKey Przechodzi do wybranego rekordu
TDataSource
W poprzednim przykładzie również korzystaliśmy z komponentu TDataSource . Nie pełni on żadnej znaczącej
funkcji poza tym, że jest pośrednikiem pomiędzy komponentami typu TTable czy TQuery a kontrolkami
wizualnymi typu TDBGrid .
TDataSet
Klasa TDataSet jest klasą bazową dla komponentów typu TQuery czy TTable , stąd posiada ona większość
metod i właściwości klasy TTable . Właściwości tej klasy przedstawiłem w tabeli 16.3, a jej główne metody ? w
tabeli 16.4.
Tabela 16.3. Główne właściwości klasy TDataSet
Metoda Opis
Active Ustawienie wartości na True powoduje połączenie z bazą danych i odczytanie zbioru danych
Bof
Właściwość zwraca True, jeśli kursor znajduje się na pierwszym rekordzie
Eof
Wartość zwraca True, jeżeli kursor znajduje się na ostatnim rekordzie
Fields Wskazanie typu TFields, zwracającego informację na temat pól
FieldValue Zwraca w postaci typu Variant wartość określonego pola
4 z 10
2009-03-14 15:50
77982120.007.png
Delphi :: Kompendium :: Rozdział 16 - 4programmers.net http://4programmers.net/Delphi/Kompendium/Rozdzia%C5%82_16
Filter Określa kryterium filtrowania rekordów
Filtered Określa, czy zastosować filtrowanie
Modified Określa, czy bieżący rekord został zmodyfikowany
RecNo Bieżący numer rekordu
RecordCount Ogólna ilość rekordów
Pisząc słowo kursor w powyższej tabeli, mam na myśli aktualnie zaznaczoną pozycję.
Tabela 16.4. Główne metody klasy TDataSet
Metoda Opis
Append Po wywołaniu tej metody stworzony zostaje nowy rekord
Cancel Anuluje zmiany dokonane w bieżącym rekordzie
ClearFields Czyści zawartość wszystkich pól rekordu
Delete Usuwa bieżący rekord
Edit Daje możliwość edycji rekordu
FetchAll Pobiera wszystkie rekordy, począwszy od zaznaczonego
FindFirst Rozpoczyna wyszukiwanie
FindNext Znajduje kolejny rekord
FindLast Znajduje ostatni rekord
Refersh Odświeża zbiór informacji o bazie danych
Komponent TQuery
W działaniu komponent TQuery (angielskie słowo query oznacza zapytanie) przypomina kontrolkę TTable .
Jedyna znacząca różnica, jaką można dostrzec, to operowanie na bazie danych za pomocą języka SQL.
SQL to skrót od angielskich słów Structured Query Language. Jest to język oparty na
specjalnych zapytaniach kierowanych do bazy.
Posługując się komponentem TQuery , możesz uzyskać dostęp do takich baz danych, jak Sybase, Oracle,
Informix, DB2 czy InterBase oraz lokalnych: Paradox, dBASE, Access i FoxPro.
Komponent TQuery nie posiada właściwości TableName, lecz dzięki zapytaniom SQL mamy możliwość uzyskania
dostępu jednocześnie do kilku tabel.
Więcej informacji o samym języku SQL znajduje się w rozdziale 17.
BDE Administrator
BDE Administrator (rysunek 16.5) to narzędzie służące do manipulowania bazami danych.
Rysunek 16.5. Program BDE Administrator
Za jego pomocą możemy usunąć, zapisać lub zmodyfikować dowolną bazę danych.
Tworzenie nowej bazy danych
Utworzenie nowej bazy danych może odbyć się zarówno poprzez aplikację BDE Administrator, jak i poprzez
5 z 10
2009-03-14 15:50
77982120.008.png 77982120.009.png
Zgłoś jeśli naruszono regulamin