AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi SQLite statisch gelinkt und DB in Resource

SQLite statisch gelinkt und DB in Resource

Ein Thema von Codehunter · begonnen am 29. Apr 2020 · letzter Beitrag vom 27. Mai 2020
Antwort Antwort
Seite 1 von 3  1 23   
Benutzerbild von Codehunter
Codehunter

Registriert seit: 3. Jun 2003
Ort: Thüringen
2.096 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#1

SQLite statisch gelinkt und DB in Resource

  Alt 29. Apr 2020, 10:21
Datenbank: SQlite • Version: 3.31 • Zugriff über: FireDAC
Hallo!

Frage 1: Laut Dokwiki unterstützt FireDAC für SQLite statisches Linken. Da ich bisher mit SQLite nichts zu tun hatte: Wie genau erstellt man ein Programm, dass keine externe SQLite-DLL benötigt?

Frage 2: Ist es möglich, eine SQLite-DB in eine Resource zu kompilieren und direkt von dort zu laden?

Ziel des ganzen soll eine monolithische EXE sein, die alles mitbringt und als portables Programm verwendet werden kann. Zusätzliche Dateien sind ausdrücklich nicht gewollt. Die SQLite-DB soll als eine In-Memory-Readonly-DB verwendet werden. Notfalls würde ich die SQLite-DB aus der Resource in eine temporäre Datei extrahieren und von dort von FireDAC laden. Besser würde mir jedoch gefallen, wenn sie direkt aus der Resource geladen würde.

Grüße
Cody
Ich mache grundsätzlich keine Screenshots. Schießen auf Bildschirme gibt nämlich hässliche Pixelfehler und schadet der Gesundheit vom Kollegen gegenüber. I und E zu vertauschen hätte den selben negativen Effekt, würde aber eher dem Betriebsklima schaden
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
1.273 Beiträge
 
Delphi 7 Professional
 
#2

AW: SQLite statisch gelinkt und DB in Resource

  Alt 29. Apr 2020, 10:42
Beschreib bitte mal kurz die Struktur der Datenbank.

Mehrere Tabellen oder eher sowas wie eine "aufgeblasene" INI?

Wird SQL zwingend benötigt?

Oder würde so 'ne Art TTable-Nachfolger (ggfls. auch mehrere) ausreichen (also die Benutzung von sowas wie tabelle.Filter, tabelle.Locate)?

Eventuell wäre dann dashier eine Alternative: KbmMemTable

Die Tabelle kann man auch aus einem Stream laden, den müsste man wiederum aus 'ner Resource laden können. Es werden dazu keine weiteren DLL's o. ä. benötigt, da die ganze Funktionalität in Delphi geschrieben ist und damit mit einkompiliert wird.
  Mit Zitat antworten Zitat
Benutzerbild von Codehunter
Codehunter

Registriert seit: 3. Jun 2003
Ort: Thüringen
2.096 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#3

AW: SQLite statisch gelinkt und DB in Resource

  Alt 29. Apr 2020, 11:17
Eine ganze Reihe von Tabellen mit Fremdschlüsseln. Also SQL mit JOINs ist da schon sehr hilfreich ^^
Ich mache grundsätzlich keine Screenshots. Schießen auf Bildschirme gibt nämlich hässliche Pixelfehler und schadet der Gesundheit vom Kollegen gegenüber. I und E zu vertauschen hätte den selben negativen Effekt, würde aber eher dem Betriebsklima schaden
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
36.128 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: SQLite statisch gelinkt und DB in Resource

  Alt 29. Apr 2020, 12:31
Meint die Hilfe jetzt statisches Linken der DLL (hier brauchst dennoch die DLL und wenn sie fehlt, dann startet das Programm nicht mehr)
oder den Code ala DCU/LIB/OBJ-File in die EXE linken? (Code einer OBJ vom Linker in die EXE eingebaut)


Bei Letzterem brauchst die vorkompilierten OBJ-Files für deine Datenbank, welche du in deine EXE einbingen kannst.
Den kompletten Code der Datenbank, nicht nur eine Zugriffskomponente, wenn du wirklich Embedded arbeiten willst.

http://docwiki.embarcadero.com/RADSt..._file_(Delphi)
Als Beispiele siehe ZLib, RegEx, PNG oder Jpeg im Delphi-Quellcode, wo auch Fremdcode (C++) gelinkt wird.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
Delphi-Tage 2005-2014
  Mit Zitat antworten Zitat
mytbo

Registriert seit: 8. Jan 2007
31 Beiträge
 
#5

AW: SQLite statisch gelinkt und DB in Resource

  Alt 29. Apr 2020, 12:45
Mit mORMot kannst du das umsetzen. Wenn du den ORM Teil verwendest, kannst du auch mit FireDAC auf die DB zugreifen. Die direkte interne Anbindung an SQLite in mORMot ist aber der bessere Weg.

Links:
- https://synopse.info/forum/
- https://synopse.info/fossil/wiki?name=Downloads

Bis bald...
Thomas
  Mit Zitat antworten Zitat
Benutzerbild von Codehunter
Codehunter

Registriert seit: 3. Jun 2003
Ort: Thüringen
2.096 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#6

AW: SQLite statisch gelinkt und DB in Resource

  Alt 29. Apr 2020, 12:48
Ich habe ein bisschen gesucht und unter C:\Program Files (x86)\Embarcadero\Studio\19.0\lib\win32\release\ eine sqlite3_x86.obj gefunden. Da SQLite keine Client-Server-DB ist, gehe ich mal davon aus, dass diese Datei das komplette DBMS enthält. Und die sollte nach meinem Verständnis vom Linker mit in die EXE gelinkt werden, sodass eben keine externe DLL notwendig ist.

EDIT: Ich frage deshalb so umständlich, weil das statische Linken zwar im Dokwiki erwähnt, jedoch nicht näher ausgeführt wird.
Ich mache grundsätzlich keine Screenshots. Schießen auf Bildschirme gibt nämlich hässliche Pixelfehler und schadet der Gesundheit vom Kollegen gegenüber. I und E zu vertauschen hätte den selben negativen Effekt, würde aber eher dem Betriebsklima schaden

Geändert von Codehunter (29. Apr 2020 um 12:51 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
36.128 Beiträge
 
Delphi 10.4 Sydney
 
#7

AW: SQLite statisch gelinkt und DB in Resource

  Alt 29. Apr 2020, 13:20
Schau mal, ob du eine pas/dcu findest, in der "sqlite3_x86.obj" drin zu finden ist,

dann würde es reichen diese Unit einzubinden.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
Delphi-Tage 2005-2014
  Mit Zitat antworten Zitat
Benutzerbild von Codehunter
Codehunter

Registriert seit: 3. Jun 2003
Ort: Thüringen
2.096 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#8

AW: SQLite statisch gelinkt und DB in Resource

  Alt 29. Apr 2020, 13:38
Mit Total Commander alles abgegrast, nach "*.*" gesucht, leider kein einziger Treffer für "sqlite3_x86.obj"

EDIT:
Zitat von Dokwiki:
Sie müssen die FireDAC.inc-Datei ändern, um den Link-Modus auszuwählen:

Definieren Sie FireDAC_SQLITE_STATIC für das statische Linken.
Heben Sie die Definition von FireDAC_SQLITE_STATIC für das dynamische Linken auf.

Hinweis: Die FireDAC.inc-Datei befindet sich in C:\Program Files (x86)\Embarcadero\Studio\19.0\source\data\firedac.
Sagt die Hilfe. Nur dummerweise gibts in dem Ordner keine .inc-Datei.
Ich mache grundsätzlich keine Screenshots. Schießen auf Bildschirme gibt nämlich hässliche Pixelfehler und schadet der Gesundheit vom Kollegen gegenüber. I und E zu vertauschen hätte den selben negativen Effekt, würde aber eher dem Betriebsklima schaden

Geändert von Codehunter (29. Apr 2020 um 13:46 Uhr)
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
1.273 Beiträge
 
Delphi 7 Professional
 
#9

AW: SQLite statisch gelinkt und DB in Resource

  Alt 29. Apr 2020, 14:11
FireDAC.inc

https://stackoverflow.com/questions/...te-and-firedac

https://stackoverflow.com/questions/...firedac-sqlite

Wenn ich das richtig gesehen habe, sind die FireDAC-Sourcen in der Professional nicht dabei, Du benötigst diese aber, um nach dem Ändern der FireDAC.inc diese neu kompilieren zu können, damit Änderungen in der FireDAC.inc wirksam werden.
  Mit Zitat antworten Zitat
Benutzerbild von Codehunter
Codehunter

Registriert seit: 3. Jun 2003
Ort: Thüringen
2.096 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#10

AW: SQLite statisch gelinkt und DB in Resource

  Alt 29. Apr 2020, 14:20
Wenn ich das richtig gesehen habe, sind die FireDAC-Sourcen in der Professional nicht dabei, Du benötigst diese aber, um nach dem Ändern der FireDAC.inc diese neu kompilieren zu können, damit Änderungen in der FireDAC.inc wirksam werden.
Ist ja wieder putzig. Danke dir für die wichtige Information! Emba hält es anscheinend nicht für wichtig, nicht mal einen Hinweis geben sie

Wenn ich das in der von dir verlinkten INC richtig sehe, ist das statische Linken per Default auf Win32 und Win64 aktiv?
Ich mache grundsätzlich keine Screenshots. Schießen auf Bildschirme gibt nämlich hässliche Pixelfehler und schadet der Gesundheit vom Kollegen gegenüber. I und E zu vertauschen hätte den selben negativen Effekt, würde aber eher dem Betriebsklima schaden
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 12:47 Uhr.
Powered by vBulletin® Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2020 by Daniel R. Wolf