Witam wszystkich w pierwszym z serii artykułów dotyczących programowanie baz danych z użyciem Delphi.
Życze miłej lekturki.
W razie pytań i zastrzeżeń co do moich artykułów piszcie na maila: goofyx@tlen.pl

Co będzie potrzebne: <- w nawiasach napisałem co ja mam
– serwer Bazy danych (MySQL 4.1)
– Delphi (2005 Personal)
– directSQL

Jeśli zastanawiasz się co to jest directSQL to już mówię:
directSQL jest zastawem kilkudziesięciu klas do bezpośredniej komunikacji z bazą danych tzn.: wymiana danych między naszą aplikacją a serwerem bazy danych odbywa się bez pośrednictwa żadnych bibliotek. W przypadku MySQL byłaby to biblioteka libMysql.dll. Nie są to komponenty a więc nie trzeba ich instalować. Aby ich użyć wystarczy przekopiować zawartość ściągniętej paczki do katalogu z projektem.

Paczkę ściągnąć można pod adresem:
http://sourceforge.net/project/showfiles.php?group_id=28168&package_id=114333

Na początek kilka założeń co do twoich umiejętności.
Zakładam, że wiesz o co chodzi w:
– ReadMe.txt z paczki
– tworzeniu okienek (formatek) w Delphi
– programowaniu obiektowym (OOP)

Do dzieła więc:)
W tym arcie zajmiemy się ustanawianiem połączenia z serwerem oraz rozłączaniem.

Rozpoczynamy od dodania dyrektywy dla kompilatora z wymuszeniem wstawienia pliku z definicjami dla diretcSQL:

Następnie musimy zmodyfikować sekcje uses naszego projektu i dodać do niego odpowiednie moduły:

W razie problemów z kompilacją aplikacji należy dołączyć do projektu wszystkie moduły związane z directSQL.

Potrzebujemy także zdeklarować zmienną będącą obiektem klasy do obsługi wymiany informacji z bazą danych:

Teraz jesteśmy gotowi do połączenia się z bazą danych.
Na formatkę dajemy Memo wraz z dwoma przyciskami – jeden do połączenia się, drugi do rozłączenia. Memo służyć nam będzie do wyświetlania komunikatów, informujących nas o stanie połączenia.
W źródle pierwszego przycisku piszemy taki kodzik:

Tłumaczenie kodu według linii:
1 – 12. – Ustawiamy potrzebne parametry do nawiązania połączenia z serwerem
Host, port, user i password nie powinny budzić pytań;)
7. Ta opcja służy do łączenia się z bazą danych pod Unix’em np.: Linux’em. Niestety jeszcze tego nie testowałem.
8. Wybór początkowej bazy danych. Podczas połączeni mamy możliwość zmiany bazy danych.
9. Jeśli podczas konfiguracji Serwera MysSQL wybraliśmy możliwość łączeni się przez TCP/IP czyli zdalnie to ustawiamy tą opcje na FALSE. Jeśli odznaczyliśmy tą opcje (tak jak ja) to wpisujemy TRUE.
10. Stosowanie połączeń bezpiecznych z zastosowaniem protokołu SSL. Aby działało potrzebujemy 2 dodatkowe biblioteki DLL. Więcej informacji o tym w pliku mysqlinc.inc.
11. Stosowanie kompresji przesyłanych informacji na czas przesyłania danych. Chodzi tutaj o wyniki zapytań z bazy danej. Kompresja odbywa się przy użyciu modułu zlib.
12. Czy podczas połączenie mają być wykorzystywane sockety Windowsa. Pod Win9x nie działa za dobrze, na NT potrafi się zwieszać. Na Win 2000 i XP działa ok. Ale i tak osobiście polecam dać FALSE. Wartość TRUE polecam w momencie chęci połączenie się z bazą zdalną czyli nie będącą na naszym komputerze.
14. Connect to funkcja służąca do nawiązania połączenia z serwerem bazy danych. Jeśli połączenie nawiązano zwraca TRUE, jeśli nie to FALSE
17. LastError – treść ostatniego komunikatu o błędzie wygenerowanego przez directSQL

Tyle na temat połączenia. Proste no nie;)

Teraz czas się rozłączyć. Jako kod drugiego przycisku wpisujemy:

1. Connected – funkcja sprawdza czy jesteśmy połączeni z bazą. Jeśli tak to zwraca TRUE, w przeciwnym wypadku FALSE
2. Close – wiadomo;) zamyka połączenie
!UWAGA!
W razie wystąpienia błędu „Client does not support authentication protocol” (co nie powinno się zdarzyć w najnowszej wersji directSQL) należy postępować zgodnie z instrukcjami:
1) uruchomić wiersz poleceń Serwera bazy danych MySQL
2) wpisać kolejno 2 polecenia:
a.1) SET PASSWORD FOR 'nazwa_usera’@’nazwa_hosta’ = OLD_PASSWORD(’haslo’);
lub
a.2) UPDATE mysql.user SET Password = OLD_PASSWORD(’haslo ’) WHERE Host = 'nazwa_hosta’ AND User = 'nazwa_usera’;
c) FLUSH PRIVILEGES;
3) uruchomić serwer bazy z parametrem „–old-passwords”

Czego dotyczy ten błąd??
Już mówię. To wszystko przez długość zaszyfrowanego hasła. Dotychczas standardową długością było 16 znaków (szyf z algorytmu MD5). W nowej wersji bazy długość tego szyfru jest dłuższa co zwiększa bezpieczeństwo bazy danych.
Wersja directSQL z 2002 roku nie obsługuje nowych haseł, dlatego podczas połączenia pojawiają się te błędy. W najnowszej ubogaconej wersji jest to poprawione.

No to by było na tyle w pierwszym arcie.
W drugim poruszę sprawę związaną z operacjami na bazie czyli „zabawa” z tabelami (tworzenie nowej, usuwanie istniejącej) oraz danymi (wpisywanie danych, edycja, kasowanie)

Tak jak pisałem na początku artu. Kontakt ze mną: goofyx@tlen.pl
Macie propozycje na tematy artów, uwagi dotyczące aktualnych??
Piszcie. Odpowiem jak tylko będę mógł.

POZDRAWIAM

Autor: Goofyx

Załączniki

  • zip sql
    Rozmiar pliku: 101 KB