Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   FDQuery als Datenspeicher aus JSON (https://www.delphipraxis.net/213188-fdquery-als-datenspeicher-aus-json.html)

Ykcim 12. Jun 2023 10:49

Datenbank: MySQL • Version: 5 • Zugriff über: FireDac

FDQuery als Datenspeicher aus JSON
 
Hallo Zusammen,

ich stehe gerade ziemlich auf dem Schlauch. Ich habe eine Client-Server App, die den CLients alle 60 Sekunden Daten zur Verfügung stellt. Nur die Server-App spricht mit der DB, indem eine Query ausgeführt wird.
Die Clients bekommen diese Daten dann via Stream und speichern ihrerseits diese dann in einer FDMemTable. Die Datenfelder sind dann mit einem DataSource, das an der FDMemTable angebunden ist, verknüpft.

Jetzt ändere ich gerade die Abfrage auf dem Server, dass ich nicht mehr die Daten mit einer eigenen Abfrage von der Datenbank holen möchte, sondern eine Funktion der bereitgestellten API nutze. Der Rückgabe ist ein JSON, das ich dann auslese.

Wie das funktioniert, war in diesem Post das Thema: https://www.delphipraxis.net/213156-json-tfdquery.html

Jetzt möchte ich gerne die ausgelesenen Daten in die FDQuery auf dem Server stecken, damit die Clients sich diese abholen können. (Da mehrere Clients die gleichen Daten zu unterschiedlichen Zeiten abfragen können, ist die Datenbeschaffung davon abgekoppelt und läuft nur strickt einmal pro Minute auf dem Server).

Das heiß aber, dass ich eine FDQuery habe, die keine Connection hat, und auch keine Abfrage benötigt, sondern die Daten manuell erhalten und diese an die Clients bei Bedarf weiterschicken soll.

Ich habe ziemlich viel Google bemüht aber wahrscheinlich noch nicht das richtige Stichwort gefunden. Ich bin auf SQLite gestoßen, wo eine dateibasierte Datenbank bemüht wird, was ich aber eigentlich auch nicht benötige.

Kann mir jemand auf die Sprünge helfen?

Vielen Dank
Patrick

Frickler 12. Jun 2023 11:06

AW: FDQuery als Datenspeicher aus JSON
 
FireDAC enthält ein Feature namens "Local SQL", mit dem man eine FDQuery auf ein beliebiges TDataSet per SQL zugreifen lassen kann. Ich habe das mal verwendet, um Zugriffen auf dBase via "TDBF" zusätzliche SQL-Funktionalität zu geben.

Nachtrag: Also rein mit den JSON Daten in eine serverseitige FDMemTable, dann per LocalSQL in die FDQuery und dann in den Stream? Muss das unbedingt eine FDQuery sein? Irgendwie erscheint mir das überkomplex.

Ykcim 12. Jun 2023 11:25

AW: FDQuery als Datenspeicher aus JSON
 
Zitat:

Muss das unbedingt eine FDQuery sein?
Nein, dass kann auch anders laufen, aber ich weiß nicht wie. Ich bin auf die FDQuery gekommen, weil die Client-Server-Struktur dahinter bereits steht und ich daran dann nichts ändern müsste.
Wie würdest Du die Daten denn alternativ für die Clients bereitstellen? In einer FDMemTable? (Den Unterschied habe ich noch nicht verstanden) Ich glaube mit einer FDMemTable kann ich auch die Daten via MemTable.SaveToStream an die Clients schicken...

Wie würde ich dann die Daten in die MemTable bekommen?

EDIT: Ich habe es jetzt so versucht und das scheint zu klappen... Ich teste mal weiter...

Delphi-Quellcode:
if assigned(FDMTable) then begin
      FDMTable.Active := true;
      FDMTable.Append;
      FDMTable.FieldByName('OPERATION_NAME').AsString := OperatorName;
      FDMTable.Post;

   end;

mytbo 12. Jun 2023 15:55

AW: FDQuery als Datenspeicher aus JSON
 
Zitat:

Zitat von Ykcim (Beitrag 1523300)
Kann mir jemand auf die Sprünge helfen?

Werden die Daten, die du jede Minute lädst vor dem Versand an die Clients bearbeitet? Trotz des ausführlichen Eingangspost hältst du uns wichtige Informationen vor. Mehr als allgemeine Hinweise sind nicht möglich. Hier ein Beispiel für die Speicherung in einer embedded SQLite Datenbank. Für den Rest der Aufgabe kann ich nur auf die Artikel Einführung in methodenbasierte oder Interface-based Services verweisen.

Bis bald...
Thomas


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