Inhaltsverzeichnis

22.4.9 Klasse SQLRequest (gb.db)

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 ) 

22.4.9.1 Methoden

Die Klasse SQLRequest verfügt nur über diese Methoden:

MethodeRückgabetypBeschreibung
Select ( [ Fields As Variant ], … ) SQLRequestZeigt 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 ( )SQLRequestZeigt 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 )SQLRequestLegt den Namen der Tabelle fest, deren Daten verarbeitet werden sollen. Die aktuelle Anforderung wird zurückgegeben, so dass Sie Methodenaufrufe verketten können.
And ( ) SQLRequestGibt 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 ( )SQLRequestGibt 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, … ) SQLRequestLegt 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, … )SQLRequestBeschreibt 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 ( )StringLiefert 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.

Download