Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   SQLite URI Definition (https://www.delphipraxis.net/190713-sqlite-uri-definition.html)

nikosophi 29. Okt 2016 15:35

Datenbank: SQLite • Version: 3.9.2 • Zugriff über: FireDAC

SQLite URI Definition
 
Hy,

Weiss jemand, wie die Syntax des Database Parameters lautet, wenn die db auf einem Server liegt?

Ich möchte mittels FireDAC FMX oder VCL auf eine SQLite Datenbank zugreifen.
Lokal auf
Delphi-Quellcode:
  cDB  := System.IOUtils.TPath.Combine(System.IOUtils.TPath.GetDocumentsPath, 'test.db');
gehts.

Wenn sich auf dem Server "myserver.de" im Verzeichnis "freigegebenerordner" die Datenbank test.db befindet,
bekomme ich bei

Delphi-Quellcode:
   
   cDB :=    'file://myserver.de/freigegebenerordner/test.db&user=ich&pass=geheim'

    FDConnection1.loginprompt := FALSE;
    FDConnection1.drivername := 'SQLite';
    FDConnection1.Params.Database := cDB;
    FDConnection1.Params.Values['Database'] := cDB;
    FDConnection1.Connected := True;
die Exception "invalid uri authority: myserver.de"

Die Datenbank selbst hat kein Passwort und lässt sich lokal öffnen.
Eine INI Datei auf dem Server kann man mit der angepassten URI Angabe auch ansehen.

Bin mir nicht sicher, ob die "file://" angabe falsch ist, oder die Parameter nicht mit "&" übergeben werden dürfen.

Danke schon mal.

Ghostwalker 29. Okt 2016 17:25

AW: SQLite URI Definition
 
Die Frage ist wie bist du (also die App) an "myserver.de" angebunden, sprich welches Protokoll.

Wenn das im lokalen Netz (kannst du z.B. über den Explorer über "Netzlaufwerk verbinden" testen), angebunden ist, sollte "File://" schon mal richtig sein.

Ist das ganze übers Internet angebunden, siehts wieder anders aus, je nach dem wie der Server (Internet-Server) konfiguriert ist. Eventuell wär hier statt "File://" eher "http://" eine
Möglichkeit, hier musst du dann ggf. auch noch einen Port angeben (z.B. "http://myserver.de:1234/ordner/test.db"


Wie das mit Firedac FMX oder einer VCL-Komponente aussieht kann ich dir leider nicht sagen, da ich das ganze über die Wrapper-Objecte aus der DP hier anbinde (bisher nur lokal).

nikosophi 30. Okt 2016 06:15

AW: SQLite URI Definition
 
Moin Ghostwriter,

Danke für deine Hinweise.
Ziel ist schon eine Anbindung via Internet, also HTTP:// oder gar HTTPS://

Nach Stöbern in diversern Foren habe ich öfters die Aussage gefunden, dass SQLite keine Client-Server Architektur hat und damit auch keine Ports benötige.
Da niemand wiedersprochen hat, nehme ich das mal als gegeben hin.

Mir ist schon klar, dass es nicht die gängige Art einer "Internetdatenbank" ist mit SQLite zu arbeiten.
Locking, Verbindungsabbrüche etc wären mir egal.
In meinem Fall wäre es sogar denkbar einfach eine XML Datei zu schreiben und diese mittels FTP hochzuladen.

Ich hatte nur gehofft, dass es grundsätzlich möglich ist.

Ghostwalker 30. Okt 2016 07:20

AW: SQLite URI Definition
 
Zitat:

Zitat von nikosophi
Nach Stöbern in diversern Foren habe ich öfters die Aussage gefunden, dass SQLite keine Client-Server Architektur hat und damit auch keine Ports benötige.
Da niemand wiedersprochen hat, nehme ich das mal als gegeben hin.

Das ist richtig, steht sogar in der Doku "Think of SQLite not as a replacement for Oracle but as a replacement for fopen()";

Hab ein wenig in der Doku gestöbert. Grundsätzlich kann SQLite3 auch URI's ("File://..."). Das hat allerdings nix mit einem Zugriff via Internet zu tun (URL "http://...".
So wie das beschrieben ist, ist das ganze wohl eher dazu gedacht, die DB auf einem File-Server unter zu bringen.

Die einzige Möglichkeit, die mir spontan einfällt, wär, die Datenbank via Indy runter zu laden (z.B. beim Start des Programms), damit normal arbeiten und zum Schluss wieder hochladen.

Aber vielleicht hat ja einer der anderen noch eine Idee oder gar schon eine Möglichkeit :)

jobo 30. Okt 2016 07:29

AW: SQLite URI Definition
 
Bevor Du mit XML oder so anfängst noch ein Hinweis.
SQLite unterstützt die "Verbindung" 2er oder mehrer SQLite Files. Zum Datentransport kann man also jeweils
- a) ein gesamtes File hoch und runterladen per FTP / HTTP / HTTPS oder
- b) ein neues File erzeugen, mit einer Teilmenge befüllen (natürlich bequem und sinnvoll mit SQL) und dann bei a) weitermachen.


Hier ist die Anbindung erklärt:
https://www.sqlite.org/lang_attach.html


Hier ist ein Abfrage Beispiel
http://stackoverflow.com/questions/8...ed-with-attach

nikosophi 30. Okt 2016 07:59

AW: SQLite URI Definition
 
Ok, prima.

Dann habe ich ja einiges auszutesten...

Hab ja heute auch eine Stunde mehr Zeit ;-)

Danke für die Infos!

jobo 30. Okt 2016 08:05

AW: SQLite URI Definition
 
Zitat:

Zitat von nikosophi (Beitrag 1352241)
Hab ja heute auch eine Stunde mehr Zeit ;-)

Wenn Du alles richtig gemacht hast, ist die Mehrzeit bereits vorbei und Du hättest diese Stunde plus heute Nacht nutzen sollen, wofür auch immmer.
;)

Mavarik 30. Okt 2016 08:07

AW: SQLite URI Definition
 
Zitat:

Zitat von nikosophi (Beitrag 1352221)
Weiss jemand, wie die Syntax des Database Parameters lautet, wenn die db auf einem Server liegt?

Das geht nicht, da SQLite keine TCP/IP Kommunikation hat... Du solltest einfach auf dem Webserver einen REST-Server auf setzen und dann z.b. per JSON mit dem Server sprechen.

Mavarik

nikosophi 30. Okt 2016 08:59

AW: SQLite URI Definition
 
@jobo: hab ich: schlafenderweise zur mentalen Vorbereitung auf mein "mal eben eine DB vom WEB Server nutzen" :-D

@Maverik: Danke für die klaren, wenn auch unerfreulichen, Worte. (hab das zwar in einem anderen Thread hier von dir gelesen, wollte es aber nicht glauben...)

Falls sich:
Zitat:

SQLite unterstützt die "Verbindung" 2er oder mehrer SQLite Files.
als "mal eben Lösung" entpuppt, gebe ich Bescheid.

Grüße an alle

Mavarik 30. Okt 2016 16:51

AW: SQLite URI Definition
 
Zitat:

Zitat von nikosophi (Beitrag 1352244)
Falls sich:
Zitat:

SQLite unterstützt die "Verbindung" 2er oder mehrer SQLite Files.
als "mal eben Lösung" entpuppt, gebe ich Bescheid.

Grüße an alle

Das hat aber mit der Fragestellung nix zu tun... Das ist dir Klar, oder? :roll:


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:08 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