Archiv des LibreOffice- und OpenOffice.org-Wiki

[ÜberSicht] [TitelIndex] [WortIndex] [SeiteFinden

(./) OOo2

Nachfolgend wird die API (Application Programming Interface, engl. für Programmierschnittstelle) zum Datenbankmodul Base beschrieben.

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:

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)

2. Siehe auch


KategorieBase KategorieMakro


LizenzBedingungen | AnbieterKennzeichnung | DatenschutzErklärung | Stand: 2013-04-28