AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken JSONArray in Insert-Statement
Thema durchsuchen
Ansicht
Themen-Optionen

JSONArray in Insert-Statement

Ein Thema von Ykcim · begonnen am 20. Apr 2021 · letzter Beitrag vom 12. Mai 2021
Antwort Antwort
Ykcim

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

JSONArray in Insert-Statement

  Alt 20. Apr 2021, 15:49
Datenbank: MySQL • Version: 8 • Zugriff über: FireDac
Hallo Zusammen,

ich bin gerade an einer Client / Server App. Der Client schickt ein JSArray-String an den Server. Der Server soll diese Daten in eine MySQL-Tabelle schreiben. Ich habe gelesen, dass ich den JSON-String direkt dazu benutzen könne. Stimmt das?

Ich habe es so versucht, wie ich es verstanden hatte, aber ohne Erfolg...

Delphi-Quellcode:
INSERT INTO versand (bnumber, print_status, ship_date, ship_time, tnumber, vdienstl)
VALUES (
'[{"bnumber":"200026","print_status":"print_ok","ship_date":"2021.04.16","ship_time":"12:42:22","tnumber":"00346527107258","vdienstl":"(Standard-Versand)"}]'
)
Bei diesem Versuch bekomme ich die Fehlermeldung:

Column count doesn't match value count at Row 1

Kennt jemand diese Vorgehensweise oder kann mir jemand einen anderen Weg weisen, wie ich aus diesem String die Daten in eine MySQL-Tabelle bekomme?

Vielen Dank
Patrick
Patrick
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.402 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: JSONArray in Insert-Statement

  Alt 20. Apr 2021, 16:31
Du musst einfach die Feldliste weglassen.
Die steht ja schließlich im JSON Text drin.

Code:
INSERT INTO versand VALUES (
'{"bnumber":"200026","print_status":"print_ok","ship_date":"2021.04.16","ship_time":"12:42:22","tnumber":"00346527107258","vdienstl":"(Standard-Versand)"}'
)
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Ykcim

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

AW: JSONArray in Insert-Statement

  Alt 20. Apr 2021, 16:45
Das wäre ja super, wenn das geht. Ich hatte bis heute noch nie etwas von der Möglichkeit gehört.

Ich habe es jetzt so versucht:
Delphi-Quellcode:
INSERT INTO versand VALUES (
'{   
   "bnumber":"200026",
   "print_status":"print_ok",
   "ship_date":"2021.04.16",
   "ship_time":"12:42:22",
   "tnumber":"003465271258",
   "vdienstl":"(Standard-Versand)"
   }
'
)

Aber leider bekomme ich dennoch die Fehlermeldung:
Column count doesn't match value count at row 1


Ich habe es sorgfältig geprüft, dass die Felder alle da sind und das die Schreibweisen identisch sind.
Ich sehe auch keine verfänglichen Schreibweisen in dem String. Hast Du noch eine Idee, was ich falsch machen könnte?

Vielen Dank
Patrick
Patrick
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.402 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: JSONArray in Insert-Statement

  Alt 20. Apr 2021, 16:51
Haben die Felder denn auch den Typ json?

// EDIT:
Und ich habe gerade gelesen, dass es nur mit InnoDB als Speichersystem geht. Ob das so ist und noch stimmt, weiß ich nicht.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Ykcim

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

AW: JSONArray in Insert-Statement

  Alt 20. Apr 2021, 17:00
Die Engine ist InnoDB

Aber die Felder sind VARCHAR, Date und Time Felder...
Ich habe auch mal eben eine Test-Tabelle angelegt, in der ich alle Datenfelder als JSON definiert habe, aber da bekomme ich die gleiche Fehlermeldung...

Wie lösen andere das Thema. Ich wäre auch bereit, mit einem klassischen insert zu arbeiten, bekomme aber die Werte nicht aus dem JS_Array. In dem Beispiel ist es nur eine Zeile, es können aber beliebig viele sein...

LG Patrick
Patrick
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.402 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: JSONArray in Insert-Statement

  Alt 20. Apr 2021, 17:50
Wie lösen andere das Thema. Ich wäre auch bereit, mit einem klassischen insert zu arbeiten, bekomme aber die Werte nicht aus dem JS_Array. In dem Beispiel ist es nur eine Zeile, es können aber beliebig viele sein...
Es gibt fertige ORMs, die solche Mappings automatisch machen können.

Ansonsten findest du in der Unit System.JSON einiges um auf die Json-Objekte und -Arrays zuzugreifen, wenn du bei Bordmitteln bleiben möchtest.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Antwort Antwort


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 13:14 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