9.8 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:

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)