Entwickler-Ecke

Datenbanken - Datenbank zur Laufzeit erstellen


Speedy112 - So 07.09.03 19:48
Titel: Datenbank zur Laufzeit erstellen
Hallo,

kann mir jemand sagen, wie ich eine Datenbank zur Laufzeit erstellen kann? Benutze Interbase 6 OpenSource und IBX 4,52 glaub ich, dazu noch delphi 5 ent.

THX


UGrohne - So 07.09.03 21:51

Du gibts ganz gewöhnlich die Parameter ind er IBDatabase-Instanz an, dazu noch Parameter, wie z.B. das Character-Set usw. und führst dann

Delphi-Quelltext
1:
IBDatabase1.CreateDatabase;                    

aus. Danach kannste ja SQL-Scripts ausführen, die Dir dann die Tabellen erstellen lassen.

So hatte ich das glaub ich gemacht.

Alternativ kannst Du auch eine leere Datenbank als Resource in die EXE einbauen und diese dann einfach entpacken, obowhl die oben genannte Methode einige Vorteile bietet.


Speedy112 - So 07.09.03 22:04
Titel: haha
So hatte ich das auch probiert und obwohl ich user und PW definiert hatte ín den Params, ging das nicht. Er hat immer die Fehlermeldung "Kein user und PW definiert" gegeben

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
If Opendialog1.Execute then DBedit5.Text:=Opendialog1.FileName;
  Create.Params.Clear;
  Create.DatabaseName:=Opendialog1.FileName;
  Create.Params.Add('user_name sysdba');
  Create.Params.Add('password masterkey');
  Create.Params.Add('lc_ctype=ISO8859_1');
  Create.Params.Add('PAGE_SIZE=4096');

Create.CreateDatabase;


Moderiert von user profile iconTino: Delphi-Tags hinzugefügt.


UGrohne - Mo 08.09.03 09:16

So, ich hab grad mal nachgeschaut, da gibts einen Unterschied zum normalen Login, da hab ich auch ewig gebraucht.
Folgende Angaben brauchst Du in den Params:
- USER (nicht user_name!!!!)
- PASSWORD
- PAGESIZE (default sind 1024)

Und den SQL-Dialect würde ich noch auf 3 einstellen.


Speedy112 - Mo 08.09.03 14:02
Titel: Problem
Funzt nicht, kannst mir den Sourcecode mal geben, wie du das gemacht hab, krieg immer fehlermeldungen.


UGrohne - Mo 08.09.03 14:17


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
IBDatabase.DatabaseName:=servername+':'+path;
IBDatabase.Params.Clear;
IBDatabase.Params.Add('USER "'+userED.Text+'"');
IBDatabase.Params.Add('PASSWORD "'+pwED.Text+'"');
IBDatabase.Params.Add('PAGE_SIZE 4096');
IBDatabase.SQLDialect:=3;
IBDatabase.CreateDatabase;

Funktioniert so in etwa bei mir einwandfrei