Home » Tutorials » Datenbanken » MySQL mit ZeosLib

MySQL mit ZeosLib

Datensätze anzeigen

Was hat man von einer Datenbank, wenn man die Daten nicht anzeigen kann? Nicht viel. In diesem Kapitel zeige ich dir, wie du die gespeicherten Daten anzeigen kannst.

Auch für dieses Problem gibt es einen vorgefertigten SQL-Befehl: SELECT.

SELECT

In der einfachsten Variante hat der SELECT-Befehl folgende Syntax:

SELECT * FROM tabellenname;

Auf diese Weise wird der komplette Inhalt der Tabelle tabellenname angefordert. Möchte man beispielsweise nur die Vor- und Nachnamen unserer Adressdatenbank haben, würde die SQL-Abfrage folgendermaßen lauten:

SELECT vorname, name FROM adressbuch;

Jetzt kann man die SELECT-Abfrage noch weiter verfeinern, indem man – ähnlich wie bei DELETE – noch weitere Kriterien in Form eines WHERE-Parameters angibt. Folgendes SQL-Statement gibt die Vor- und Nachnamen all derer an, die in Berlin (Feld wohnort) wohnen:

SELECT vorname, name FROM adressbuch WHERE wohnort = Berlin ORDER BY name;

Durch den letzten Parameter wird die Datenrückgabe auch gleichzeitig nach den Werten im Feld name sortiert. Weitere Möglichkeiten des SELECT-Befehls findest du in SQL-Sprachreferenzen.

Hinweis: Achte bei SELECT-Abfragen darauf, dass du nur soviele Informationen anforderst, wie du benötigst!

Einbindung in den Delphi-Quelltext

Die bisherigen SQL-Abfragen wurden einfach nur an die Datenbank geschickt. Nun möchten wir aber auch Daten von der Datenbank erhalten und anzeigen.

Zunächst wird das SQL-Statement an den Server gesendet. Bei SELECT-Abfragen wird der SQL-Befehl mit der Methode Open anstatt mit ExecSQL gesendet. In unserem Beispiel benötigen wir die komplette Tabelle. Praktischerweise lassen wir uns die Daten direkt nach Namen sortieren:

 qrMain.SQL.Text:='Select * from adressbuch order by name;';
  qrMain.Open;

Nun lassen sich die Datensätze nacheinander aus der Komponente auslesen. Dies geschieht mit einer While-Schleife, die jeden Datensatz durchläuft. Wichtig ist dabei die Methode FieldByName, über die ein Feld angesprochen wird:

qrMain.FieldByName('id').AsString;

Damit würde das Feld id des aktuellen Datensatzes in einen String konvertiert werden. Es wäre auch möglich den Inhalt mit AsInteger als Integer zurückzugeben. Da wir die Daten aber in einer ListView-Komponente anzeigen lassen möchten, bietet es sich an, alle Werte in Strings zu konvertieren. Die Methode Next setzt den Zeiger auf den nächsten Datensatz.

while not qrMain.Eof do
begin
  ListItem := lvAnzeige.Items.Add;
  ListItem.Caption:=qrMain.FieldByName('id').AsString;
  ListItem.SubItems.Add(qrMain.FieldByName('vorname').AsString);
  ListItem.SubItems.Add(qrMain.FieldByName('name').AsString);
  ListItem.SubItems.Add(qrMain.FieldByName('adresse').AsString);
  ListItem.SubItems.Add(qrMain.FieldByName('plz').AsString);
  ListItem.SubItems.Add(qrMain.FieldByName('wohnort').AsString);
  qrMain.Next;
end;