AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken FDQuery als Datenspeicher aus JSON

FDQuery als Datenspeicher aus JSON

Ein Thema von Ykcim · begonnen am 12. Jun 2023 · letzter Beitrag vom 12. Jun 2023
Antwort Antwort
Ykcim

Registriert seit: 29. Dez 2006
Ort: NRW
810 Beiträge
 
Delphi 10.4 Sydney
 
#1

FDQuery als Datenspeicher aus JSON

  Alt 12. Jun 2023, 10:49
Datenbank: MySQL • Version: 5 • Zugriff über: FireDac
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
Patrick
  Mit Zitat antworten Zitat
Frickler

Registriert seit: 6. Mär 2007
Ort: Osnabrück
566 Beiträge
 
Delphi XE6 Enterprise
 
#2

AW: FDQuery als Datenspeicher aus JSON

  Alt 12. Jun 2023, 11:06
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.

Geändert von Frickler (12. Jun 2023 um 11:17 Uhr)
  Mit Zitat antworten Zitat
Ykcim

Registriert seit: 29. Dez 2006
Ort: NRW
810 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: FDQuery als Datenspeicher aus JSON

  Alt 12. Jun 2023, 11:25
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;
Patrick

Geändert von Ykcim (12. Jun 2023 um 11:47 Uhr)
  Mit Zitat antworten Zitat
mytbo

Registriert seit: 8. Jan 2007
461 Beiträge
 
#4

AW: FDQuery als Datenspeicher aus JSON

  Alt 12. Jun 2023, 15:55
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
  Mit Zitat antworten Zitat
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 01:38 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