OOo2
Nachfolgend wird die API (Application Programming Interface, engl. für Programmierschnittstelle) zum Datenbankmodul Base beschrieben.
Inhaltsverzeichnis
1. StarBasic
1.1. Datenbankobjekte deklarieren
' Deklaration der Datenbankobjekte DIM DatabaseContext AS OBJECT DIM Datenquelle AS OBJECT DIM Verbindung AS OBJECT DIM Authentifizierung AS OBJECT DIM SQL_Anweisung AS OBJECT DIM Abfrageergebnis AS OBJECT
Die Objektnamen dürfen umbenannt werden. Nach der Deklaration mit geänderten Namen müssen die unten angegebenen Codeschnippsel entsprechend angepasst werden.
1.2. Datenbankkontext erzeugen
' Datenbankkontext erzeugen
DatabaseContext = createUnoService("com.sun.star.sdb.DatabaseContext")
Dieser Code wird nur einmal je Programmdurchlauf benötigt.
1.3. Namen aller angemeldeten Datenbanken ermitteln
' Datenbanknamen abfragen Datenbankname = DatabaseContext.getElementNames() FOR I = 0 TO UBOUND(Datenbankname()) MsgBox Datenbankname(I) NEXT I
1.4. Auf angemeldete Datenbank prüfen
' Erwartete Datenbank angemeldet?
IF DatabaseContext.hasByName("Datenbankname")=true THEN
Anweisungen
END IF
1.5. Datenquelle wählen
' Datenquelle wählen
Datenquelle = DatabaseContext.getByName("Datenbankname")
Hier wird nur der Datenbankname benötigt. Die Bezeichnung der Datenbanktabelle ist Bestandteil der SQL-Anweisung
1.6. Verbindung zur Datenquelle aufbauen
Empfohlener Code für die Benutzerauthentifizierung bei Bedarf.
' bei Bedarf Dialog für Passwortschutz aufrufen
IF NOT Datenquelle.IsPasswordRequired THEN
Verbindung = Datenquelle.GetConnection("","")' ("Benutzername","Passwort")
ELSE
Authentifizierung = createUnoService("com.sun.star.sdb.InteractionHandler")
Verbindung = Datenquelle.ConnectWithCompletion(Authentifizierung)
END IF
1.7. SQL-Kommunikationskanal aufbauen
' SQL-Kommunikationskanal aufbauen SQL_Anweisung = Verbindung.createStatement()
SQL-Anweisungen können ohne Rückfrage ganze Datenbanktabellen unwiderruflich ruinieren. Es wird dringend empfohlen die Datenbank zu kopieren, und mit der Kopie die SQL-Anweisungen über die Benutzeroberfläche von Base zu entwerfen, bevor diese per Makro getestet werden.
Die Fehlermeldungen des SQL-Parsers sind manchmal verwirrend.
Die häufigsten SQL-Fehler sind:
- Einfache und doppelte Anführungszeichen wurden verwechselt ("Tabellenname", "Datenfeldname", 'String')
- Text- und numerische Datentypen wurden verwechselt
- Syntax-Fehler, Groß-/Kleinschreibung bei Tabellen- oder Datenfeldnamen nicht beachtet
- Tabellen verwechselt, Datenfeldname existiert nicht in angegebener Tabelle
1.8. SQL-Abfragen
1.8.1. SQL-Abfrage ausführen
' SQL-Abfrage ausführen DIM Sql AS STRING Sql = "SELECT * FROM "+CHR(34)+"Tabellenname"+CHR(34)' Beispiel Abfrageergebnis = SQL_Anweisung.executeQuery(Sql)
1.8.2. Abfrageergebnis auswerten
' SQL-Abfrageergebnis auswerten
IF NOT ISNULL(Abfrageergebnis) THEN
WHILE Abfrageergebnis.next
MsgBox Abfrageergebnis.getString(1)' Erstes Datenfeld
MsgBox Abfrageergebnis.getString(2)' Zweites Datenfeld
WEND ' nächster Datensatz
END IF
Abfrageergebnis hat den Wert NULL wenn die Abfrage nicht durchgeführt werden konnte.
Abfrageergebnis.next ergibt den Wert TRUE, solange noch ein weiterer Datensatz existiert, danach FALSE. Das Abfrageergebnis wird als Array zurückgegeben. Das 1. Datenfeld hat den Index 1.
1.9. Update-Anweisungen
Mit dem folgenden Code lassen sich SQL-Anweisungen ausführen, die kein Ergebnis zurückgeben müssen (INSERT, UPDATE, DELETE, ...).
' SQL-Anweisung ausführen DIM Sql AS STRING Sql = "DELETE FROM "+CHR(34)+"Tabellenname"+CHR(34)' Beispiel SQL_Anweisung.executeUpdate (Sql)
