Inhaltsverzeichnis

22.4.3 Klasse DB (gb.db)

Diese Klasse repräsentiert die aktuelle Datenbank-Verbindung, die standardmäßig die zur ersten geöffneten Datenbank ist. Sie können die Datenbank-Verbindung ändern, indem Sie den Wert der Eigenschaft `DB.Current` modifizieren.

22.4.3.1 Eigenschaften

Die Klasse DB verfügt über die folgenden Eigenschaften:

EigenschaftDatentypBeschreibung
CharsetStringGibt den von der Datenbank verwendeten Zeichensatz zurück.
CurrentConnectionSetzt die aktuelle DB-Verbindung oder gibt die aktuelle DB-Verbindung zurück.
DebugBooleanLegt mit True fest, dass die Datenbank-Komponente in den Debugging-Modus versetzt wird. Wenn dieses Flag gesetzt ist, so wird jede Datenbank-Abfrage auf der Standard-Fehlerausgabe ausgegeben.
ErrorIntegerGibt den Fehler-Code des letzten, vom Datenbank-Treiber ausgelösten Fehler zurück.
HandlePointerGibt den Zeiger auf die Standard-Datenbank-Verbindung zurück. Dies ist ein Zeiger auf das zugrundeliegende Objekt - assoziiert mit der Standard-Datenbank-Verbindung.
IgnoreCharset BooleanGibt True zurück, wenn der Datenbank-Zeichensatz ignoriert werden soll oder setzt den Wert der Eigenschaft.
Opened BooleanGibt True zurück, wenn die aktuelle DB-Verbindung geöffnet ist.
Databases .Connection.DatabasesGibt eine Übersicht aller Datenbanken zurück, die vom DB-Server verwaltet werden.
Users.Connection.UsersGibt eine Übersicht der DB-Benutzer in einer Datenbank zurück.
Tables.Connection.TablesGibt eine Übersicht der verwalteten Tabellen in einer Datenbank zurück.

Tabelle 22.4.3.1.1 : Eigenschaften der Klasse DB

Die Klasse .Connection.Databases repräsentiert eine Sammlung aller Datenbanken, die vom Datenbank-Server verwaltet werden. Möglicherweise sehen Sie nicht jede Datenbank, wenn der Benutzer, mit dem Sie sich mit dem Server verbunden haben, nicht über ausreichende Rechte verfügt.

Die Klasse .Connection.Tables stellt eine Übersicht aller Tabellen der Datenbank bereit, zu der Sie sich mit dem Verbindungsobjekt verbunden haben.

Die Klasse .Connection.Users liefert eine Übersicht aller registrierten DB-Benutzer auf dem DB-Server. SQLite-Datenbanken jedoch haben keine speziellen DB-Benutzer; sie akzeptieren jeden Benutzer, weil ein ausgewiesenes Sicherheitskonzept fehlt.

22.4.3.2 Methoden

Die Klasse DB verfügt über diese Methoden:

MethodeBeschreibung
Begin ( )Startet eine Transaktion.
Close ( )Schließt eine bestehende DB-Verbindung zwischen DB-Client und DB-Server.
Open ( )Öffnet eine (neue) Verbindung zu der in den Verbindungseigenschaften angegebenen Datenbank. Die Open()-Methode besitzt keine Parameter. Deshalb sind die Verbindungseigenschaften vor dem Aufruf Open()-Methode einzustellen.
Commit ( )Änderungen am Datenbestand werden übernommen.
Rollback ( )Änderungen am Datenbestand während einer Sitzung werden zurückgenommen.
Delete ( Table As String [ , Request As String, Arguments As , … ] )Löscht Datensätze aus einer DB-Tabelle (Umsetzung einer SQL-Anweisung…). Table ist der Name der DB-Tabelle. Request ist eine SQL-WHERE-Klausel zum Filtern der Tabelle und Arguments werden gemäß der SQL-Syntax in Anführungszeichen gesetzt und innerhalb der Abfragezeichenfolge ersetzt.
Edit ( Table As String [ , Request As String, Arguments As , … ] ) As ResultGibt ein Lese/Schreib-Ergebnis-Objekt für das Editieren von Datensätzen in der angegebenen Tabelle zurück. Table ist der Name der DB-Tabelle. Request ist eine SQL-WHERE-Klausel zum Filtern der Tabelle und Arguments werden gemäß der SQL-Syntax in Anführungszeichen gesetzt und innerhalb der Abfragezeichenfolge ersetzt.
Exec ( Request As String, Arguments As , … ) As ResultFührt eine beliebige SQL-Anfrage aus und gibt das Ergebnis der Anfrage als ein Nur-Lese-Ergebnis zurück. Request ist jede valide SQL-Anweisung und Arguments werden gemäß der SQL-Syntax in Anführungszeichen gesetzt und innerhalb der Abfragezeichenfolge ersetzt.
Find ( Table As String [ , Request As String, Arguments As , … ] ) As ResultGibt ein schreibgeschütztes Ergebnisobjekt zurück, das zur Abfrage von Datensätzen in der angegebenen Tabelle verwendet wird. Table ist der Name der DB-Tabelle. Request ist eine SQL-WHERE-Klausel zum Filtern der Tabelle und Arguments werden gemäß der SQL-Syntax in Anführungszeichen gesetzt und innerhalb der Abfragezeichenfolge ersetzt.
Function Limit ( Limit As Integer ) As ConnectionBegrenzt die Anzahl der Datensätze, die von der nächsten Abfrage zurückgegeben werden. Nachdem die Abfrage ausgeführt wurde, wird das Limit automatisch aufgehoben. Der Funktionswert ist vom Typ Connection, so dass Sie etwa Folgendes schreiben können: DB.Limit(12).Exec(…).
FormatBlob ( Data As String ) As StringFormatiert einige Blob-Daten so, dass sie in eine SQL-Abfrage eingefügt werden können.
Quote ( Name As String [ , Table As Boolean ] ) As StringGibt einen Bezeichner in Anführungszeichen zurück, so dass Sie ihn frei in eine Abfrage einfügen können. Dieser Bezeichner kann ein Tabellen- oder ein Feldname sein.
Function Subst ( Format As String, Arguments As , … ) As StringErzeugt einen SQL-Satz, indem seine Argumente in eine Format-Zeichenkette eingesetzt werden. Format ist die SQL-Anweisung und Arguments ist die Liste der zu ersetzenden Argumente.

Tabelle 22.4.3.2.1 : Methoden der Klasse DB

Beispiel

DIM $hDBConnecton As NEW Connection

WITH $hDBConnecton
   .Type = "postgresql"
   .Host = "localhost"
   .Login = "loginname"
   .Password = "password"
   .Port = "5432"
   .Name = "testdb"
END WITH

TRY $hDBConnecton.Open()
IF Error THEN PRINT "Cannot Open Database! Error = "; Error.Text

Hinweise:

Mit der Methode Delete(…), können Sie SQL-Anweisungen schreiben, die unabhängig vom zugrunde liegenden Datenbanktyp sind. Ein nicht zu unterschätzender Vorteil, wenn es um die Entwicklung und den Test wiederverwendbarer Software geht. Sobald Sie das Ergebnis-Objekt erhalten haben, können Sie einige der Felder ändern. Danach können Sie die Result.Update()-Methode aufrufen, um die Änderungen an die Datenbank zu senden.

    DIM hResult AS Result
    DIM sCriteria AS String    
    DIM iParemeter AS Integer
 
    sCriteria = "id = &1"
    iParameter = 1012
 
    $hDBConnecton.Begin()
 
'-- Same as "SELECT * FROM table_name WHERE id = 1012"
    hResult = $hDBConnecton.Edit("table_name", sCriteria, iParameter)
'-- Set field value
    hResult!Name = "Mayer"
 
'-- Update the value
    hResult.Update()
    $$hDBConnecton.Commit()
'-- Gibt die Anzahl der Datensätze in einer Abfrage zurück. sTable ist der Name der Tabelle.
'-- Er kann reservierte Zeichen enthalten, daher müssen Sie ihn in Anführungszeichen setzen!
    rResult = Handle.Exec("SELECT COUNT(*) AS nRecord FROM " & DB.Quote(sTable, True))
    PRINT rResult!nRecord
PRINT DB.Subst("WHERE Name = &1 AND Date = &2", "Mayer-Motzen", Now())

Download