Verwenden der strukturierten Abfragesprache in Delphi

click fraud protection

SQL (Structured Query Language) ist eine standardisierte Sprache zum Definieren und Bearbeiten von Daten in einer relationalen Datenbank. In Übereinstimmung mit dem relationalen Datenmodell wird die Datenbank als eine Reihe von Tabellen wahrgenommen, Beziehungen sind dargestellt durch Werte in Tabellen, und Daten werden durch Angabe einer Ergebnistabelle abgerufen, die von einer oder mehreren abgeleitet werden kann Basistabellen. Abfragen haben die Form einer Befehlssprache, mit der Sie auswählen, einfügen, aktualisieren, finden den Ort der Daten und so weiter.

In Delphi: TQuery

Wenn Sie SQL in Ihren Anwendungen verwenden, werden Sie mit dem vertraut TQuery Komponente. Mit Delphi können Ihre Anwendungen die SQL-Syntax direkt über die TQuery-Komponente verwenden, um auf Daten aus Paradox- und dBase-Tabellen zuzugreifen (unter Verwendung von lokalem SQL - Teilmenge von ANSI-Standard-SQL), Datenbanken auf dem lokalen InterBase-Server und Datenbanken auf der entfernten Datenbank Server.
Delphi unterstützt auch heterogene Abfragen für mehr als einen Server- oder Tabellentyp (z. B. Daten aus einer Oracle-Tabelle und einer Paradox-Tabelle). TQuery verfügt über eine Eigenschaft namens

instagram viewer
SQL, mit dem die SQL-Anweisung gespeichert wird.

TQuery kapselt eine oder mehrere SQL-Anweisungen, führt sie aus und stellt Methoden bereit, mit denen wir die Ergebnisse bearbeiten können. Abfragen können in zwei Kategorien unterteilt werden: diejenigen, die Ergebnismengen erzeugen (z. B. a WÄHLEN Aussage) und diejenigen, die dies nicht tun (wie z AKTUALISIERENoder EINFÜGEN Erklärung). Verwenden Sie TQuery. Öffnen, um eine Abfrage auszuführen, die eine Ergebnismenge erzeugt. Verwenden Sie TQuery. ExecSQL zum Ausführen von Abfragen, die keine Ergebnismengen erzeugen.

Die SQL-Anweisungen können entweder sein statisch oder dynamischDas heißt, sie können zur Entwurfszeit eingestellt werden oder Parameter enthalten (TQuery. Params), die zur Laufzeit variieren. Die Verwendung parametrisierter Abfragen ist sehr flexibel, da Sie die Ansicht und den Zugriff eines Benutzers auf Daten im laufenden Betrieb zur Laufzeit ändern können.

Alle ausführbaren SQL-Anweisungen müssen vorbereitet sein, bevor sie ausgeführt werden können. Das Ergebnis der Vorbereitung ist die ausführbare oder operative Form der Anweisung. Die Methode zur Erstellung einer SQL-Anweisung und die Persistenz ihrer Betriebsform unterscheiden statisches SQL von dynamischem SQL. Zur Entwurfszeit wird eine Abfrage automatisch vorbereitet und ausgeführt, wenn Sie die festlegen Abfrage Die Active-Eigenschaft der Komponente auf True. Zur Laufzeit wird eine Abfrage mit einem Aufruf zum Vorbereiten vorbereitet und ausgeführt, wenn die Anwendung die Open- oder ExecSQL-Methoden der Komponente aufruft.

Eine TQuery kann zwei Arten von Ergebnismengen zurückgeben: "Leben"Wie bei der TTable-Komponente (Benutzer können Daten mit Datensteuerelementen bearbeiten und bei einem Aufruf von Post werden Änderungen an die Datenbank gesendet)."schreibgeschützt"nur zu Anzeigezwecken. Um eine Live-Ergebnismenge anzufordern, setzen Sie die RequestLive-Eigenschaft einer Abfragekomponente auf True und beachten Sie, dass die SQL-Anweisung bestimmte Anforderungen erfüllen muss (kein ORDER BY, SUM, AVG usw.).

Eine Abfrage verhält sich in vielerlei Hinsicht sehr ähnlich wie ein Tabellenfilter. In mancher Hinsicht ist eine Abfrage sogar noch leistungsfähiger als ein Filter, da Sie damit auf Folgendes zugreifen können:

  • mehrere Tabellen gleichzeitig ("Join" in SQL)
  • eine bestimmte Teilmenge von Zeilen und Spalten aus den zugrunde liegenden Tabellen, anstatt immer alle zurückzugeben

Einfaches Beispiel

Lassen Sie uns nun SQL in Aktion sehen. Obwohl wir den Datenbankformular-Assistenten verwenden könnten, um einige SQL-Beispiele für dieses Beispiel zu erstellen, werden wir dies Schritt für Schritt manuell tun:

1. Platzieren Sie eine TQuery-, TDataSource-, TDBGrid-, TEdit- und eine TButton-Komponente im Hauptformular.
2. Setzen Sie die DataSet-Eigenschaft der TDataSource-Komponente auf Query1.
3. Setzen Sie die DataSource-Eigenschaft der TDBGrid-Komponente auf DataSource1.
4. Setzen Sie die DatabaseName-Eigenschaft der TQuery-Komponente auf DBDEMOS.
5. Doppelklicken Sie auf die SQL-Eigenschaft einer TQuery, um ihr die SQL-Anweisung zuzuweisen.
6. Ändern Sie die Active-Eigenschaft der TQuery-Komponente in True, damit das Raster zur Entwurfszeit Daten anzeigt.
Das Raster zeigt Daten aus der Employee.db-Tabelle in drei Spalten (Vorname, Nachname, Gehalt) an, auch wenn Employee.db verfügt über 7 Felder, und die Ergebnismenge ist auf die Datensätze beschränkt, in denen der Vorname beginnt mit 'R'.

7. Weisen Sie nun dem OnClick-Ereignis von Button1 den folgenden Code zu.

Verfahren TForm1.Button1Click (Absender: TObject); Start
Query1.Close;{Abfrage schließen}// neuen SQL-Ausdruck zuweisen
Query1.SQL.Clear; Query1.SQL.Add ('EmpNo, Vorname, Nachname auswählen'); Query1.SQL.Add ('FROM Employee.db'); Query1.SQL.Add ('WHERE Gehalt>' + Edit1.Text); Query1.RequestLive: = true; Query1.Open; {Abfrage öffnen + Daten anzeigen}Ende;

8. Führen Sie Ihre Anwendung aus. Wenn Sie auf die Schaltfläche klicken (solange Bearbeiten 1 einen gültigen Währungswert enthält), wird im Raster die angezeigt Felder EmpNo, Vorname und Nachname für alle Datensätze, bei denen das Gehalt höher als die angegebene Währung ist Wert.

In diesem Beispiel haben wir eine einfache statische SQL-Anweisung mit Live-Ergebnismenge (wir haben keinen der angezeigten Datensätze geändert) nur zu Anzeigezwecken erstellt.

instagram story viewer