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 INTOtabellennam(
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.