Zastosowanie komponentów ZeosLib do obsługi baz danych Drukuj Email
Ocena użytkowników: / 18
SłabyŚwietny 
Wpisany przez Berl   
czwartek, 08 września 2005 15:26

W tym artykule zajmiemy się pisaniem programu wykorzystującego bazę danych MySQL. Użyjemy do tego komponentów Zeos, które są do pobrania pod adresem :

http://sourceforge.net/projects/zeoslib/

Jako że instalacja tych komponentów często przysparza problemy, pomimo jasno napisanej instrukcji instalacji, to napiszę jeszcze dokładniej, jak należy się do tego zabrać :

1. Rozpakowujemy komponenty do jakiegoś folderu na dysku, załóżmy, że będzie to c:\zeoslib;

2. Kopiujemy pliki z c:\zeoslib\lib\mysql do folderu c:\windows\system lub c:\windows\system32, w zależności od posiadanej wersji Windows, lub też kopiujemy je po prosty do katalogu programu.

3. Włączamy Delphi, wybieramy z menu głównego Tools\Environment Options..., przechodzimy na zakładkę Library, i w pole Library Path wpisujemy po kolei ścieżki dostępu do plików Zeosa, czyli :

c:\zeoslib\src\component
c:\zeoslib\src\core
c:\zeoslib\src\dbc
c:\zeoslib\src\parsesql
c:\zeoslib\src\plain
Ścieżki oczywiście rozdzielamy średnikami;

4. W edytorze Delphi otwieramy i instalujemy pliki znajdujące się w c:\zeoslib\packages\delphiX\, gdzie X oznacza numer Twojej wersji Delphi, w następującej

kolejności :

ZCore.bpl
ZParseSql.bpl
ZPlain.bpl
ZDbc.bpl
ZComponent.bpl

Tak zainstalowane komponenty Zeos są gotowe do pracy.

Do napisania programu będziemy jeszcze potrzebować jakiejś bazy MySQL. Polecam pakiet WAMP (do ściągnięcia z http://www.wampserver.com/en/download.php), gdyż zawiera on MySQL, a w dodatku jest od razu skonfigurowany i po zainstalowaniu od razu gotowy do pracy. Instalujemy go, uruchamiamy, i mamy dostęp do bazy MySQL.

Teraz przechodzimy do pisania programu.

1. Przechodzimy do edytora Delphi i wybieramy File|New Application.

2. Dodajemy na formę następujące komponenty z zakładki Zeos Acces :

ZConnection
ZQuery

3. Zmieniamy właściwości komponentu ZConnection1:

a. HostName : localhost
b. Password : [wstawiamy swoje hasło]
c. Protocol : mysql
d. ReadOnly : false
e. User : [wstawiamy swoją nazwę użytkownika]

4. Zmieniamy właściwości komponentu ZQuery1 :

a. Connection : ZConnection1

5. Dodajemy na formę komponenty z zakładki Data Controls.

DBGrid
DataSource

Jeżeli nie dysponujesz takimi komponentami, oznacza to, że posiadasz wersję Delphi Personal, która niestety nie posiada komponentów bazodanowych. W takim

wypadku musisz spojrzeć na koniec artykułu, gdzie jest napisane, jak radzić sobie bez tych komponentów.

6. Zmieniamy właściwości komponentu DataSource1:

a. DataSet : ZQuery1

7. Zmieniamy właściwości komponentu DBGrid1 :

a. DataSource : DataSource1

8. Chcielibyśmy, żeby program od razu po włączeniu łączył się z odpowiednią bazą danych, i wyświetlał rekordy, jakie się w niej znajdują. Piszemy obsługę dla zdarzenia OnShow formy głównej :

procedure TForm1.FormShow(Sender: TObject);
begin
  try
    ZConnection1.Database := 'test';
    ZConnection1.Connect;
    ZQuery1.SQL.Add('SELECT * FROM osoby');
    ZQuery1.Active := true;
  except
    ShowMessage('Tabela "osoby" nie jest jeszcze utworzona.');
  end;
end;


Możemy teraz włączyć program i zobaczyć, jak będzie się on zachowywał.

Zgodnie z oczekiwaniami program wypisał komunikat o braku tabeli, z której chcemy odczytywać rekordy. Należałoby więc tą tabelę (oraz całą bazę danych)

utworzyć. Najpierw zajmiemy się utworzeniem bazy danych :

9. Dodajemy na formę komponent Button z zakładki Standard.

10. Zmieniamy jego właściwości :
a. Caption : Stwórz bazę

11. Piszemy obsługę zdarzenia OnClick dla Buttona2

procedure TForm1.Button2Click(Sender: TObject);
begin
  ZConnection1.Database := 'test';
  ZConnection1.Connect;
  ZQuery1.SQL.Clear;
  ZQuery1.SQL.Add('DROP TABLE IF EXISTS osoby');
  ZQuery1.ExecSQL;
  ZQuery1.SQL.Clear;
  ZQuery1.SQL.Add('CREATE TABLE osoby (id INT NOT NULL AUTO_INCREMENT, 
          imie CHAR(20), PRIMARY KEY(id))');
  ZQuery1.ExecSQL;
  ZQuery1.SQL.Clear;
  ZQuery1.SQL.Add('select * from osoby');
  ZQuery1.Active := true;
end;


W ten sposób mamy stworzoną bazę danych, oraz mamy w tej bazie danych jedną pustą tabelę. Tabela ta wyświetli się w komponencie DBGrid1, gdy tylko zostanie utworzona.

Teraz zaimplementujemy dodawanie rekordów do naszej bazy.

15. Dodajemy na formę następujące komponenty z zakładki Standard :

Edit
Button

16. Zmieniamy właściwości komponentu Button3:

a. Caption : Dodaj rekord

17. Piszemy obsługę zdarzenia OnClick dla komponentu Button3 :

procedure TForm1.Button3Click(Sender: TObject);
begin
  ZConnection1.Connect;
  ZQuery1.SQL.Clear;
  ZQuery1.SQL.Add('INSERT INTO osoby(id,imie) VALUES(0, :imie)');
  ZQuery1.ParamByName('imie').AsString := Edit1.Text;
  try
    ZQuery1.ExecSQL;
    ZQuery1.Close;
    ZQuery1.SQL.Clear;
    ZQuery1.SQL.Add('select * from osoby');
    ZQuery1.Open;
  except
    ShowMessage('Błąd.');
  end;
end;

Wystarczy teraz wpisać nowe imię, i nacisnąć przycisk Dodaj rekord. Imię wpisane w pole Edit1 zostanie wtedy dodane do bazy danych.

Może się jednak zdarzyć, że chcemy wykasować jakiś rekord z bazy danych. Dlatego napiszemy teraz obsługę kasowania rekordów z bazy danych.

18. Dodajemy na formę komponent Button z zakładki Standard
19. Zmieniamy właściwości komponentu Button4:

a. Caption : Skasuj rekord

20. Piszemy obsługę zdarzenia OnClick dla komponentu Button4 :

procedure TForm1.Button4Click(Sender: TObject);
begin
  ZConnection1.Connect;
  ZQuery1.SQL.Clear;
  ZQuery1.SQL.Add('DELETE FROM osoby WHERE imie=:imie_kasowanego');
  ZQuery1.ParamByName('imie_kasowanego').AsString := Edit1.Text;
  try
    ZQuery1.ExecSQL;
    ZQuery1.Close;
    ZQuery1.SQL.Clear;
    ZQuery1.SQL.Add('select * from osoby');
    ZQuery1.Open;
  except
    ShowMessage('Błąd.');
  end;
end;

Czasami może być też tak, że źle wpiszemy rekord do bazy danych, i nie chcemy go kasować, lecz tylko zmodyfikować. W tym celu zaimplementujemy modyfikowanie rekordu w naszej bazie danych.

21. Dodajemy na formę następujące komponenty z zakładki Standard :

Edit
Button

22. Zmieniamy właściwości komponentu Button5:

a. Caption : Modyfikuj rekord

23. Piszemy obsługę zdarzenia OnClick dla komponentu Button5 :

procedure TForm1.Button5Click(Sender: TObject);
begin
  ZConnection1.Connect;
  ZQuery1.SQL.Clear;
  ZQuery1.SQL.Add('UPDATE osoby SET imie=:im_modyfikowane '+
          'WHERE id=:identyfikator');
  ZQuery1.ParamByName('im_modyfikowane').AsString := Edit1.Text;
  ZQuery1.ParamByName('identyfikator').AsInteger := StrToInt(Edit2.Text);
  try
    ZQuery1.ExecSQL;
    ZQuery1.Close;
    ZQuery1.SQL.Clear;
    ZQuery1.SQL.Add('select * from osoby');
    ZQuery1.Open;
  except
    ShowMessage('Błąd.');
  end;
end;


Jak jednak sobie radzić z bazami danych, gdy posiadamy wersję Delphi Personal, i tym samym nie dysponujemy komponentami DataSource i DBGrid? Otóż jest na to bardzo prosty sposób, mianowicie można wyswietlać rekordy w zwykłym StringGridzie.

24. Dodajemy na formę komponent Button z zakładki Standard.
25. Zmieniamy właściwości komponentu Button6:

a. Caption : Pokaż rekordy

26. Dodajemy na formę komponent StringGrid z zakładki Additional.
27. Piszemy obsługę zdarzenia OnClick dla komponentu Button5 :

procedure TForm1.Button6Click(Sender: TObject);
var
  i : integer;
begin
  i := 1;
  ZQuery1.First;
  while not ZQuery1.Eof do begin
    StringGrid1.Cells[1,i] := ZQuery1.FieldByName('id').AsString;
    StringGrid1.Cells[2,i] := ZQuery1.FieldByName('imie').AsString;
    ZQuery1.Next;
    i := i + 1;
  end;
end;




Jak widać, obsługa bazy danych MySQL przy zastosowaniu komponentów Zeos jest zagadnieniem bardzo prostym i łatwym do zrozumienia.

 

Statystyka

Użytkowników : 41
Artykułów : 76
Odsłon : 92473

Gościmy

Naszą witrynę przegląda teraz 2 gości 

Chmura tagów

delphi MySQL dziesiętny WHERE SendMessage Delphi rot-13 cezara binarny system forma WM_SYSCOMMAND ReleaseCapture SET windows szyfrowanie zamiana liczb FROM edytor zmienne