Import i eksport bazy danych z Delphi7 do MySQL

0

Witajcie.
Używam Delphi7 Enterprise. Stworzyłem sobie taką małą uniwersalną bazę danych ze StringGridem w roli głównej gdzie można dodawać kolumny i wiersze i jako baza lokalna działa bez zarzutu (odczyt, zapis do pliku, drukowanie, wyszukiwanie) ale teraz chciałbym dodać opcję sieci - najlepiej dwukierunkowo czyli import-eksport bazy danych.
Napotkałem niestety na 2 jak dla mnie duże problemy i nie wiem jak się do nich zabrać, gdyż moja zabawa z siecią dopiero się rozpoczyna:
Pierwszy problem w tym, że nie mogę sobie poradzić z połączeniem do MySQL. Chciałbym zrobić to za pomocą pól "Edit" aby była możliwość łączenia się do dowolnej (utworzonej wcześniej oczywiście) bazy danych na MySQL. (czyli przykładowo: na Form1 - edit1: Adres Hosta, Edit2: port , Edit3 :nazwa B.D. Edit4: login Edit5: hasło. i jakiś button - do połączenia) bo jak na razie łączę się tylko poprzez "Value List Editor" w SQLConnection1, ale tam można wpisać na stałe tylko wartości odpowiednie do połączenia tylko z jedną (można powiedzieć stałą) bazą danych.
Drugi problem to taki, że moja baza danych ma zmienną ilość kolumn i wierszy (podczas działania programu można dodawać kolumny lub wiersze - w razie potrzeby) a co za tym idzie, nie wiem jakiej procedury użyć aby po pierwsze: przy eksporcie bazy danych na serwer - automatycznie skorygować odpowiednią ilość kolumn i wierszy i odpowiednio zapisać wyniki i po drugie przy imporcie z serwera - automatycznie skorygować kolumny i wiersze w StringGridzie.
Jeśli byłby mi to ktoś w stanie wytłumaczyć jak to zrobić albo coś doradzić będę wdzięczny, Pozdrawiam.

0

MySQL to nie moja bajka, ale ale ...
Może zainstalowałbyś sobie GExperts w swoim Delphi? Po zainstalowaniu wrzucasz na formę to SQLConnection, ustawiasz w nim co chcesz i za pomocą GEXperts robisz Component to code. Polecenie to będzie w pull_down menu.
Ja uzyskałem:

 with SQLConnection1 do begin
    Name := 'SQLConnection1';
    ConnectionName := 'MySQLConnection';
    DriverName := 'MySQL';
    GetDriverFunc := 'getSQLDriverMYSQL';
    LibraryName := 'dbxmys30.dll';
    Params.Clear;
    Params.Add('BlobSize=-1');
    Params.Add('Database=DBNAME');
    Params.Add('DriverName=MySQL');
    Params.Add('ErrorResourceFile=');
    Params.Add('HostName=FantastycznySerwer');
    Params.Add('LocaleCode=0000');
    Params.Add('Password=aCoTam');
    Params.Add('User_Name=ToJa_ToJa_ToJa');
    Params.Add('Compressed=False');
    Params.Add('Encrypted=False');
    VendorLib := 'LIBMYSQL.dll';
  end;

Co do drugiego problemu, to nawet nie próbuję zgadywać, jakim regułom ma podlegać przenoszenie danych pomiędzy dwoma, o różnej liczbie wierszy i kolumn, StringGridami. Ale w bazie danych, w tabeli możesz mieć trzy kolumny:

  1. numer_wiersza
  2. numer_kolumny
  3. wartosc_celi

No i reszta to już zależy od Ciebie.

0

Dzięki wielkie, za podpowiedź GExperts może mi pomoże bo sam wbudowany dbexpress ma prawdopodobnie zbyt mało opcji w sobie - albo ja ich jeszcze nie odkryłem. Trochę powalczę zobaczę co z tego wyjdzie, co do drugiego problemu myślę żeby zrobić 2 opcje pierwsza (można powiedzieć pierwszy przycisk w programie) importuj - wówczas nastąpi import bazy danych z mysql do stringgrida, gdzie po prostu stringgrid będzie wyzerowany i po prostu przyjmie wszystkie wartości, kolumn i wierszy z MySQL'a i to będzie koniec tej operacji, druga opcja (drugi przycisk) Export - będzie po prostu odwrotnością pierwszego, tyle że to będzie trudniejsze by z poziomu programu praktycznie skasować istniejącą bazę danych na serwerze i założyć ją od nowa w ten sposób by przyjęła wszystkie wartości ze stringgrida który jest w programie lokalnym. :) ale to przede mną, pobawię się trochę i zobaczę co z tego wyjdzie. Dzięki. Pozdrawiam.

0

Jeśli bazę masz lokalnie spróbuj z DISQLite3, kompatybilność nawet ze starymi delfiaczami, fajne narzędzia pomocniczne i przyjazne API https://www.yunqa.de/delphi/products/sqlite3/index

0

Dzięki, brzmi nieźle sprawdzę i DISQLite3 ponadto nawinął mi się jeszcze taki komponencik jak ZEOS-DBO, więc teraz mam trochę rzeczy do ogarnięcia :) dziękuję Wam za pomoc.

1 użytkowników online, w tym zalogowanych: 0, gości: 1