AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Leere Vorgabedatenbank

Ein Thema von sko1 · begonnen am 3. Mai 2017 · letzter Beitrag vom 4. Mai 2017
Antwort Antwort
Seite 1 von 2  1 2      
sko1

Registriert seit: 27. Jan 2017
601 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#1

Leere Vorgabedatenbank

  Alt 3. Mai 2017, 09:41
Datenbank: SQLite • Version: ? • Zugriff über: Firemonkey
Hallo,

in meinem Windows/Android-Projekt arbeite ich mit einer SQLite-Datenbank.
Diese wird bei Installation als leere Datenbank (ohne Tabellen usw.) angelegt und dann im Programm die Tabellen usw. erzeugt.

Jetzt bin ich am Suchen wie man
a) die leere Datenbank gleich irgendwie in die EXE verpacken kann oder
b) eine leere Datenbank per Code erstellen kann, bisher habe ich dafür den "DB Browser für SQLite" verwendet.

Ciao
Stefan
  Mit Zitat antworten Zitat
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.492 Beiträge
 
Delphi 7 Enterprise
 
#2

AW: Leere Vorgabedatenbank

  Alt 3. Mai 2017, 09:47
Die Datenbank wird beim Öffnen der Verbindung automatisch erstellt, falls sie nicht existiert. Das Vorgehen mit einer leeren Vorgabedatenbank war eigentlich überflüssig.
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#3

AW: Leere Vorgabedatenbank

  Alt 3. Mai 2017, 09:50
Ich mache es immer so, dass ich eine TFDConnection einrichte und dieser zur Laufzeit (BeforeConnect) den Datenbanknamen zuweise.
Delphi-Quellcode:
procedure TMeinDataModule.LocalConnectionBeforeConnect(Sender: TObject);
const
  LOCALDBNAME = 'MeineDB.s3db';
begin
  LocalConnection.Params.Values['Database'] :=
    TPath.Combine(ConfigPath, LOCALDBNAME);
end;
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.176 Beiträge
 
Delphi 10 Seattle Enterprise
 
#4

AW: Leere Vorgabedatenbank

  Alt 3. Mai 2017, 10:05
Ich nehme das Freeware-Tool meines Vertrauens "SQLite Expert" und lege damit meine gewünschte Struktur an. Zeitgleich kann er mir ein Buildscript daraus generieren, also wie man diese Tabellen und Regeln per SQL anlegen würde. Das kann aber sicherlich jedes andere Tool auch.

Wenn beim Programmstart die Datenbank nicht existiert nimmt das Programm dieses hinterlegte Skript und führt es aus. Dann habe ich meine erwartete Tabellenstruktur und bin fertig. Optional könnte dieses Buildskript schon Beispieldaten enthalten wenn man z.B. einen Demo-Modus haben möchte...


Praktisch habe ich eine Variable mustRunBuildScript die im OnBeforeConnect-Event der Verbindung auf True gesetzt wird wenn die Datenbank nicht existiert. Im OnAfterConnect-Event wird dann, wenn die Variable true ist, das Buildscript über TFDConnection.ExecSQL(..) ausgeführt.

Delphi-Quellcode:
procedure TStorageModuleSqlite.runBuildScript();
const
   fileName = 'buildscript_sqlite.sql';
var
   filePath: String;
begin
   filePath := TPath.Combine('...', fileName);
   connection.ExecSQL( TFile.ReadAllText(filePath) );
   mustRunBuildScript := False;
end;

Geändert von Der schöne Günther ( 3. Mai 2017 um 10:08 Uhr)
  Mit Zitat antworten Zitat
sko1

Registriert seit: 27. Jan 2017
601 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#5

AW: Leere Vorgabedatenbank

  Alt 3. Mai 2017, 10:08
Die Datenbank wird beim Öffnen der Verbindung automatisch erstellt, falls sie nicht existiert. Das Vorgehen mit einer leeren Vorgabedatenbank war eigentlich überflüssig.
OOOOOHHHHHH!
Da mach ich "Kopfstände" und es ist sooo einfach!

Vielen herzlichen Dank für's "Brett vor dem Kopf entfernen"!

Unter Windows wird die DB problemlos erstellt, Android teste ich dann in Folge

Ciao
Stefan
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#6

AW: Leere Vorgabedatenbank

  Alt 3. Mai 2017, 14:04
Ich nehme das Freeware-Tool meines Vertrauens "SQLite Expert" und lege damit meine gewünschte Struktur an. Zeitgleich kann er mir ein Buildscript daraus generieren, also wie man diese Tabellen und Regeln per SQL anlegen würde. Das kann aber sicherlich jedes andere Tool auch.

Wenn beim Programmstart die Datenbank nicht existiert nimmt das Programm dieses hinterlegte Skript und führt es aus. Dann habe ich meine erwartete Tabellenstruktur und bin fertig. Optional könnte dieses Buildskript schon Beispieldaten enthalten wenn man z.B. einen Demo-Modus haben möchte...


Praktisch habe ich eine Variable mustRunBuildScript die im OnBeforeConnect-Event der Verbindung auf True gesetzt wird wenn die Datenbank nicht existiert. Im OnAfterConnect-Event wird dann, wenn die Variable true ist, das Buildscript über TFDConnection.ExecSQL(..) ausgeführt.

Delphi-Quellcode:
procedure TStorageModuleSqlite.runBuildScript();
const
   fileName = 'buildscript_sqlite.sql';
var
   filePath: String;
begin
   filePath := TPath.Combine('...', fileName);
   connection.ExecSQL( TFile.ReadAllText(filePath) );
   mustRunBuildScript := False;
end;
Abgesehen davon, daß ich das gut finde, prüfst du auch ob die Datenbank, die du findest, falls eine vorhanden sein sollte, auch die richtige ist?

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.176 Beiträge
 
Delphi 10 Seattle Enterprise
 
#7

AW: Leere Vorgabedatenbank

  Alt 3. Mai 2017, 14:06
Verstehe ich nicht: Wie ist denn eine Datenbank die "richtige"? Oder was wäre eine "falsche" und warum sollte sie dort liegen wo das Programm sie erwartet?
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#8

AW: Leere Vorgabedatenbank

  Alt 3. Mai 2017, 17:56
Na die richtige ist die, mit den erwarteten Tabellen und Feldern in den Tabellen.
z.B. könnten Versionsunterschiede (zus. Felder oder fehlende Felder / Typänderungen) Dein Programm ja etwas verwirren.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.176 Beiträge
 
Delphi 10 Seattle Enterprise
 
#9

AW: Leere Vorgabedatenbank

  Alt 3. Mai 2017, 18:12
Das meinst du. Guter Punkt!

Ich habe eine Tabelle in welcher die "Versionsnummer" drin steht. Wenn die Datenbank-Version jetzt z.B. "1.4" ist, die Software nach einem Update aber nun mit einer Version "1.5" arbeiten möchte ... ja, dann führt sie noch ein Skript aus welches die Datenbank-Struktur von "1.4" auf "1.5" updatet.
  Mit Zitat antworten Zitat
sko1

Registriert seit: 27. Jan 2017
601 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#10

AW: Leere Vorgabedatenbank

  Alt 4. Mai 2017, 06:58
Genau so mache ich das auch und dank der Tips hier muss ich keine leere Datenbank mehr als Grundausstattung "mitliefern"...

Ciao
Stefan
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:41 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz