Home » Tutorials » Datenbanken » MySQL direct

MySQL direct

Verbindung aufbauen

Der erste Schritt beim Arbeiten mit einem Datenbankserver ist das Aufbauen einer Verbindung. Zuvor sind aber einige Vorarbeiten nötig:
Folgende MySQLdirect-Units müssen in den Interface-Abschnitts der Hauptunit unseres Projekts eingebunden werden:

uses ..., umysqlvio, uMysqlCT, uMysqlClient, uMysqlHelpers;

Direkt danach noch vor den Typdeklarationen muss die Include-Datei, die sich im Download der Units befindet, eingebunden werden:

{$I mysqlinc.inc}

Da es sich hier wie gesagt nicht um Komponenten handelt, sind wir selbst für das Erzeugen und Freigeben zuständig. Im private-Abschnitt von TForm1 deklarieren wir dafür folgende Objektreferenzen:

private
  FMysql: TMysqlClient;
  FResult: TMysqlResult;

FMySql soll auf das Objekt verweisen, das für den Datenbankzugriff benötigt wird. FResult ist für die Ergebnismenge von Abfragen zuständig.
Im OnCreate-Ereignis des Hauptfenster wird FMySql dann erzeugt:

procedure TForm1.FormCreate(Sender: TObject);
begin
  FMysql := TMysqlClient.create;
end;

Bei Programmende muss das Objekt natürlich auch wieder freigegeben werden:

procedure TForm1.FormDestroy(Sender: TObject);
begin
  FMysql.Free;
  if FResult<>nil then
    FResult.free;
end;

Kommen wir nun zum Herstellen der Verbindung zum MySQL-Server. Dafür müssen einige Parameter gesetzt werden:

procedure TForm1.Button1Click(Sender: TObject);
begin
  // Eigenschaften setzen
  FMysql.Host := 'localhost';
  FMysql.port := 3306;
  FMysql.user :=' user1';
  FMysql.password := '1234';
  FMysql.UnixSocket := '';
  FMysql.Db := 'test'; // Datenbank auf dem Server
  FMysql.UseNamedPipe := false;
  FMysql.UseSSL := false;
  FMysql.Compress := true;
  FMysql.TrySockets := false;
  if FMysql.Connect then
    ShowMessage('Verbindung aufgebaut')
  else
    ShowMessage('Fehler beim Verbinden: '+FMysql.LastError);
end;

Und wenn wir die Verbindung wieder beenden wollen, muss ein Button mit folgendem Code existieren:

procedure TForm1.Button2Click(Sender: TObject);
begin
  if FMysql.Connected then
    FMysql.close
  else
    ShowMessage('Nicht verbunden!');
end;