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
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
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
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
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
Plik z chomika:
Wiewioor
Inne pliki z tego folderu:
Delphi __ Kompendium __ Roz1.pdf
(1299 KB)
Delphi __ Kompendium __ Roz10.pdf
(777 KB)
Delphi __ Kompendium __ Roz11.pdf
(1764 KB)
Delphi __ Kompendium __ Roz12.pdf
(834 KB)
Delphi __ Kompendium __ Roz13.pdf
(1951 KB)
Inne foldery tego chomika:
■ePub
A.B Strugaccy
Ann Rice - Śpiąca królewna
Ćwiek Jakub
Ebooki-EPUB-PL-MegaPack
Zgłoś jeśli
naruszono regulamin