Die Klasse bietet die Möglichkeit, eine grundlegende SQL-Anfrage auf einer (einzigen) Tabelle zu erzeugen.
Die Klasse bewahrt die Unabhängigkeit des Gambas-DBMS. Die Klasse vereinigt die syntaktischen Unterschiede zwischen den SQL-Anforderungen der verschiedenen Datenbank-Systeme (SQLite, PostgreSQL und MySQL) in einer standardisierten Syntax. Diese Klasse kann als Funktion verwendet werden. Die Function `SQLRequest( )` liefert die SQL-Anfrage als String zurück, die dem SQLRequest-Objekt zu Grunde liegt. Dies erfolgt über eine Verknüpfung mit der Get()-Methode.
Die Klasse kann erzeugt werden:
Dim hSQLRequest As SQLRequest hSQLRequest = New SQLRequest ( Connection As Connection )
Die Klasse SQLRequest verfügt nur über diese Methoden:
Methode | Rückgabetyp | Beschreibung |
---|---|---|
Select ( [ Fields As Variant ], … ) | SQLRequest | Zeigt an, dass es sich bei der Anforderung um eine SELECT-Anforderung handelt. Die Argumente beschreiben die Felder, die von der Anfrage zurückgegeben werden. Sie können entweder einen Feldnamen als Argument oder alle Feldnamen in einem einzigen Argument als String-Array angeben. Die aktuelle Anforderung wird zurückgegeben, so dass Sie Methodenaufrufe verketten können. |
Delete ( ) | SQLRequest | Zeigt an, dass es sich bei der Anforderung um eine DELETE-Anforderung handelt. Die aktuelle Anforderung wird zurückgegeben, so dass Sie Methodenaufrufe verketten können. |
From ( Table As String ) | SQLRequest | Legt den Namen der Tabelle fest, deren Daten verarbeitet werden sollen. Die aktuelle Anforderung wird zurückgegeben, so dass Sie Methodenaufrufe verketten können. |
And ( ) | SQLRequest | Gibt an, dass die nächste WHERE-Klausel mit dem AND-Operator verknüpft wird. Die aktuelle Anforderung wird zurückgegeben, so dass Sie Methodenaufrufe verketten können. |
Or ( ) | SQLRequest | Gibt an, dass die nächste WHERE-Klausel mit dem OR-Operator verknüpft wird. Die aktuelle Anforderung wird zurückgegeben, so dass Sie Methodenaufrufe verketten können. |
Where ( Where As String, … ) | SQLRequest | Legt ein Kriterium der Where-Klausel fest. Die Funktion funktioniert genau wie die Connection.Subst() Methode. Die aktuelle Anforderung wird zurückgegeben, so dass Sie Methodenaufrufe verketten können. Wenn Sie mehrere WHERE-Klauseln verketten, müssen Sie den Operator zwischen ihnen mit der Und- oder Oder-Methode angeben. |
OrderBy ( OrderBy As Variant, … ) | SQLRequest | Beschreibt die ORDER BY-Klausel der Anfrage. Die Argumente beschreiben die Felder ORDER BY. Sie können entweder einen Feldnamen als Argument oder alle Feldnamen in einem einzigen Argument als String-Array angeben. Die aktuelle Anforderung wird zurückgegeben, so dass Sie Methodenaufrufe verketten können. Sie können zum Beispiel festlegen, dass ein Feld absteigend sortiert werden muss, indem Sie ein Leerzeichen und die Zeichenkette „DESC“ hinter dem Feldnamen hinzufügen. |
Get ( ) | String | Liefert die SQL-Anfrage, die dem SQLRequest-Objekt zu Grunde liegt. |
Tabelle 22.4.9.1.1 : Methoden der Klasse SQLRequest
Beispiel
Der folgende Quelltext-Abschnitt erzeugt ein neues SQL-Anfrageobjekt. Die Datenbankverbindung ist `hDBConnection`, für welche die Anfrage gilt. Erzeugt wird ein SQL-Statement, das für den von der DB-Verbindung hDBConnection angegebenen Datenbanktyp stets korrekt ist:
Dim hDBConnection As Connection Dim iAgeMin As Integer = 18 Dim iAgeMax As Integer = 30 Dim hSQLRequest As SqlRequest Dim hDBResult As Result '--- Initializing the connection hSQLRequest = New SqlRequest(hDBConnection) hDBResult = hDBConnection.Exec(hSqlRequest.Select("id", "name", "age").From("people").Where("age >= &1", iAgeMin).And().Where("age <= &1", iAgeMax).OrderBy("name", "age DESC").Get())
Hier die vom Autor genutzte Variante:
Dim hDBConnection As Connection Dim sSQLStatement As String Dim hDBResult As Result ' ... Initializing the connection sSQLStatement = "SELECT id, name, age FROM people WHERE age >= 18 AND age <= 30 ORDER BY name,age DESC" hDBResult = hDBConnection.Exec(sSQLStatement)
Die Variable hDBResult (Datentyp Result) enthält alle Daten, die der Datenbank-Server oder die DB-Bibliothek im Falle von SQLite zurück liefert.