| Zastosowanie komponentów ZeosLib do obsługi baz danych |
|
|
| Napisał: Berl | |
| czwartek, 08 wrzesień 2005 | |
|
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://www.zeoslib.net 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; 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 Krasnal (do ściągnięcia z http://www.krasnal.tk/), gdyż zawiera on MySQL, a w dodatku jest od razu skonfigurowany i po zainstalowaniu (koniecznie w domyślnym folderze) od razu gotowy do pracy. Instalujemy go, uruchamiamy, i mamy dostęp do bazy MySQL (user : root, pass : krasnal). 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 : krasnal c. Protocol : mysql d. ReadOnly : false e. User : root 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 tego Buttona : 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); vari : 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. Aby dodać komentarz zaloguj się. Jeśli nie masz konta, załóż je sobie. |
| wstecz | dalej » |
|---|




