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)