StarBasic FAQWissen, das weiterhilft.

Datenbanken

Wie kann man eine neue Datenbank erzeugen?

Man kann mit StarBasic auch eine neue Datenbank anlegen. Dies geht aber nicht über ein neues Dokument, wie man nach dem Menü Neu -> Datenbank erwarten könnte, sondern direkt über den Datenbankcontainer (com.sun.star.sdb.DatabaseContext).
Dabei wird eine neue Instanz einer Datenquelle erzeugt und diese mit den nötigen Parameter ( Datenbanktyp, Name, Pfad etc.) versehen, danach gespeichert und registriert.

Erstmal holt man sich die vorhandenen Datenquellen:

DatenBanken = createUnoService("com.sun.star.sdb.DatabaseContext")

In diesem Service steht die Methode createinstance zur Verfügung die eine neue Datenquelle erzeugt.

NeueDatenBank= DatenBanken.createinstance()

Der wichtigste Parameter ist "URL" in diesem steht die eigentliche Verknüpfung zu der Datenbank.
Der Syntax für diese Verknüpfung ist sdbc:treiber:datenbank.
Hier Beispiele:

Datenbank
Verknüpfung
Adabas
sdbc:adabas::mydb
Dbase
sdbc:dbase:c:\text\daten
Tabelle
sdbc:calc:c:\test.ods
ODBC
sdbc:odbc:Visual FoxPro-Datenbank
Access
sdbc:ado:access:PROVIDER=Microsoft.Jet.OLEDB.4.0;DATA SOURCE=C:\Eigene Dateien\db1.mdb
Outlook
sdbc:address:outlook
( Weitere Beispiele folgen noch)

Hier mit einer Dbase-Datenbank:

NeueDatenBank.url="sdbc:dbase:c:\text\daten"

Weitere wichtige Parameter:

IsPasswordRequired - True, wenn ein Password für die Datenbank benötigt wird.
IsReadOnly - True, wenn die Datenbank nur lesend geöffnet werden kann.
Password - Passwort für die Datenbank.
User - User der Datebanken

Abschließend wird die neue Datenbank gespeichert und im Datenbankcontainer registriert.

NeueDatenBank.DatabaseDocument.storeAsURL("file:///c:/test.odb",getArgs())
DatenBanken.registerObject("NeueDB", NeueDatenBank)


So und jetzt das ganze nochmal hintereinander:

Basic
DatenBanken = createUnoService("com.sun.star.sdb.DatabaseContext")
NeueDatenBank= DatenBanken.createinstance()
NeueDatenBank.url="sdbc:dbase:c:\text\daten"
NeueDatenBank.DatabaseDocument.storeAsURL("file:///c:/test.odb",getArgs())
DatenBanken.registerObject("NeueDB", NeueDatenBank)