założyć bazę na serwerze mySQL

0

chcę abyprzy pierwszym uruchomieniu program tworzył bazę danych, do niej sie logował i ja uruchamiał. Wiem jak to sie robi w SQLu, ale nie mam pojęcia jak się zabrać do tego czysto programowo, bez otwierania ręcznie serwera. Mam nadzieję że jasno to wytłumaczyłem. Może jest gdzieś jakiś gotowy przykład?

0

Ja tworzę za pomocą darmowych komponentów Zeos. Przesyłam wycinek kodu z mojego programu:


function OfeesZbudujBazeDanych(ZQuery : TZQuery) : boolean;
var
  sql : string;
begin
  if isMySQL then
    sql := 'CREATE DATABASE IF NOT EXISTS ' + NAZWA_BAZY_DANYCH else
    sql := 'CREATE DATABASE ' + NAZWA_BAZY_DANYCH;


  Result := false;
  try
    // Czyszczenie poprzedniego polecenia
    ZQuery.SQL.Clear;
    // Dodanie kwerendy do wykonania
    ZQuery.SQL.Add(sql);
    // Przesłanie jej do DB
    ZQuery.ExecSQL;
    Result := true;
  except
    if not isMySQL then
      raise Exception.Create('Inny program korzysta z bazy danych, nie mogę utworzyć własnej bazy');
  end;

end;

potem... przy uruchamianiu


if isMySQL then
  try
    Jobber.Busy := true;
    ZCon.Database := '';

    PolaczonyZBaza := false;
    ZCon.Connect;

    OfeesZbudujBazeDanych(ZQuery);

    ZCon.Disconnect;

    if (o.Get('BazaDanych')<>'') then
      ZCon.Database := o.Get('BazaDanych') else
      ZCon.Database := 'ofeesdatabase';

    PolaczonyZBaza := true;


    //Jobber.Terminate;

    ZCon.Connect;

    //SHOW DATABASES;
    sql := 'SHOW TABLE STATUS FROM ' + ZCon.Database;

    // Czyszczenie poprzedniego polecenia
    ZQuery.SQL.Clear;
    // Dodanie kwerendy do wykonania
    ZQuery.SQL.Add(sql);
    // Przesłanie jej do DB
    ZQuery.Open;

    // Jeśli baza danych nie istnieje
    if ZQuery.Eof then
    begin
      ZbudujBazeDanych;

      // Wstawianie standardowych danych
      OfeesWstawDane;
    end;
  1. Łączę się z serwerem nie podając nazwy bazy danych.

  2. Tworzę bazę tylko IF EXISTS, badam status tabel bazy -czy zgadzają się z aktualną wersją programu

  3. Jeśli baza jest pusta buduję tabele i wstawiam standardowe dane

0

Mam pytanie:

Co to jest isMySQL ?
Mam komponenty Zeos ale nie wiem co to jest jobber ?
Jak łączę się z bazą bez podania nazwy, to zgłasza błąd. Więc jak mam zrobić połączenie ?

0

Już znalazłem proste rozwiązanie
Komponent ZMySqlDatabase1 z pakiety Zeos ma funkcję CreateDatabase.

try
ZMySqlDatabase1.Connect;
except
on E: Exception do
begin
ZMySqlDatabase1.CreateDatabase('nazwa_bazy');
ZMySqlDatabase1.Connect;
end;
end;

I baza już istnieje. Teraz można się do niej połączyć !
Najtrudniej znaleźć najprostsze rozwiązanie ! :D

0

Po prostu wrzuciłem kawałek kodu ze swojego programu. To moje dodatki.

isMySQL było zmienną boolean, bo program pracuje na też Postrgesie

a Jobber to taki system, który osobnemu wątkowi przydzielał momenty pracy -to mi ułatwia pisanie bazy, żeby nie blokować programu

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