Home » Tutorials » Datenbanken » MySQL mit ZeosLib

MySQL mit ZeosLib

Datensätze hinzufügen/löschen

Datensätze hinzufügen

Da sich in unserer Datenbank nun eine Tabelle befindet, können wir die ersten Datensätze hinzufügen. Dies geschieht über den SQL-Befehl Insert. Die (vereinfachte) Syntax ist leicht zu erklären:

 INSERT INTO tabellennam(feld1,feld2,feld3) VALUES
 ('Wert für feld1', 'Wert für feld2', 'Wert für feld3');

Das Statement lässt sich fast so ins Deutsche übersetzen:

Füge in die Tabelle tabellenname mit den Feldern feld1, feld2 und feld3 die Werte Wert für feld1, Wert für feld2 und Wert für feld3 ein.

Für die Dateneingabe stehen in unserem Beispielprojekt Edit-Felder für Vorname, Name, Adresse, Wohnort und Postleitzahl zur Verfügung. Eine ID-Nummer müssen wir nicht angeben, da sich MySQL automatisch um deren Vergabe kümmert.

Schreibe in das OnClick-Ereignis des Hinzufügen-Buttons folgendes, um einen Datensatz hinzuzufügen:

procedure TForm1.btnHinzuClick(Sender: TObject);
 begin
  dbMain.Host:=edServer.Text;  //Server
  dbMain.Login:=edLogin.Text;  //Benutzername
  dbMain.Password:=edPasswort.Text;  //Passwort
  dbMain.Database:=edDB.Text;  //Datenbank
  dbMain.Connected:=True; //Verbindung herstellen
  try
    qrMain.SQL.Text:='INSERT INTO adressbuch '+
      '(id, vorname, name, adresse, wohnort, plz)'+
      ' VALUES '+
      '('''', '''+edVorname.Text+''', '''+edName.Text+
      ''', '''+edAdresse.Text+''', '''+edWohnort.Text+
      ''', '''+edPLZ.Text+''');';
    qrMain.ExecSql;  //SQL-Statement ausführen
  finally
    dbMain.Connected:=False; //Verbindung trennen
  end;
end;

Zunächst werden zur Sicherheit abermals die Verbindungsdaten zum MySQL-Server übernommen. Danach wird eine Verbindung um Server aufgebaut und der Datensatz über ein SQL-Statement hinzugefügt. Da es sich bei SQL-Statements um einen String handelt, ist die Handhabung mit Hochkommas etwas unübersichtlich. Diese dienen in Delphi normalerweise dazu, einen String abzutrennen. Soll in dem String allerdings ein Hochkomma vorkommen, muss man es verdoppeln (''), um es darzustellen.
Abschließend wird die Verbindung wieder getrennt.

Datensätze löschen

Natürlich ist es in einer Datenbank auch möglich, einzelne Datensätze zu löschen. Für das Löschen ist der SQL-Befehl DELETE zuständig:

DELETE FROM tabellenname WHERE feld1='wert1' LIMIT 1;

Dieses Statement würde in der Tabelle tabellenname nach einem Datensatz suchen, dessen Feld feld1 den Wert wert1 enthält. Ließe man LIMIT 1 bei diesem Statement außen vor, würden alle Datensätze gelöscht werden, die dem WHERE-Parameter (engl.: Wo) entsprächen. Der WHERE-Parameter enthält quasi die Löschbedingungen.

Da in unserer Adressdatenbank jedem Datensatz eine eindeutige ID zugewiesen wurde, können wir die ID-Nummer als Löschkriterium benutzen:

DELETE FROM adressbuch WHERE id='1';

In diesem Fall wird der Datensatz mit der ID 1 gelöscht werden.

Im Quelltext sieht das SQL-Statements folgendermaßen aus:

qrMain.SQL.Text:='DELETE FROM adressbuch WHERE id='''+edID.Text+''';';

Die ID-Nummer wird aus dem entsprechenden Edit-Feld ausgelesen. Ausgeführt wird das Statement, wie bisher über die Methode ExecSQL. Natürlich muss vorher eine Verbindung zum Datenbankserver hergestellt werden.