LabVIEWForum.de
SQlite Update syntax - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+---- Forum: Datenbank & File IO (/Forum-Datenbank-File-IO)
+---- Thema: SQlite Update syntax (/Thread-SQlite-Update-syntax)



SQlite Update syntax - Hubert R. - 06.09.2020 12:01

Hallo zusammen,

vielleicht kann mir wer weiterhelfen. Ich möchte einen Datensatz in SQlite mit UPDATE überschreiben.
Dieses klappt aber nicht und ich erhalte immer eine Fehlermeldung mit dem Verweis „near VALUES“.
Wenn ich den UPDATE String über ein Admintool reinschreibe sieht er so aus und funktioniert.

UPDATE abstract SET recipe=123,mould="hurra",run_status=0,stack_counter_actual=1234,run_time=0,stop_time=0,stack_counter_tar​get=102,release_2=0,release_3=0,release_4=0,release_5=0,release_6=0,average_cycl​e_time=1000 WHERE link_ID=1;

Bedingt durch die SQlite syntax in Labview muss ich die Parameter „VALUES“ etwas anders übergeben, das sollte dann eigentlich so aussehen:

UPDATE abstract SET
(link_ID=,recipe=,mould=,run_status=,stack_counter_actual=,run_time=,stop_time=,​stack_counter_target=,release_2=,release_3=,release_4=,release_5=,release_6=,ave​rage_cycle_time=) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?) WHERE link_ID=1;

Aber so klappt das nicht und ich erhalte die Fehlermeldung „Error near VALUES“ kann mir jemand von euch einen Tipp geben was ich falsch mache.

Anmerkung: Im False Fall wird der INSERT ausgeführt und funktioniert.

Gruß Hubert

Hier noch das Vi, sorry


RE: SQlite Update syntax - Martin.Henz - 06.09.2020 14:26

Hallo Hubert,

das Toolkit von NI ist ein bisschen "beschränkt" - es kennt nicht alle Datentypen bzw. setzt diese dann nicht korrekt um und du bekommst solche Fehlermeldungen. Es gibt aber auch eine ganze Menge anderee Einschränkungen. So wie es programmiert ist, gibt es je nach verwendeter Datenbank fast immer irgendwann ein Problem. Das NI Toolkit ist einganz guter Ansatzpunkt, aber es ist nur in den wenigsten Fällen wirklich gut geeignet (Ähm - eigentlich in gar keinem Fall).

Alternativen:
1. Ein Toolkit deiner Wahl für SQLite verwenden
2. Den SQL-String so wie er ist einfach ausführen (DB Tools Exdecute Query.vi).
3. Ein eigenes Toolkit entwickeln

Nachtrag: Eventuell musst du beim SQL String das
mould="hurra"
durch
mould='hurra'
ersetzen. Ich könnte mir zumindest vorstellen, dass das ein problem darstellt - bin da aber nicht sicher, weil ich das so noch nie probiert habe.


RE: SQlite Update syntax - Hubert R. - 09.09.2020 10:37

So nach einigem rumprobieren habe ich die Syntax herausgefunden.

UPDATE abstract SET link_ID = ?, recipe = ? WHERE ID = 1;

So stimmt die Syntax.

Schade das es zu SQlite kaum Beispiele für LV gibt.

Gruß Hubert


RE: SQlite Update syntax - jg - 09.09.2020 12:00

(09.09.2020 10:37 )Hubert R. schrieb:  Schade das es zu SQlite kaum Beispiele für LV gibt.
Das liegt aber an der von dir verwendeten SQlite-API.

Wir haben firmenintern ein Toolkit, welches direkt die SQlite-DLL aufruft, da werden einfach die Kommandos in SQL-Syntax als String übergeben.

Da würde dein SQL-Kommando

UPDATE abstract SET recipe=123,mould="hurra",run_status=0,stack_counter_actual=1234,run_time=0,stop_time=0,stack_counter_tar​​get=102,release_2=0,release_3=0,release_4=0,release_5=0,release_6=0,average_cyc​l​e_time=1000 WHERE link_ID=1;

direkt funktionieren.

Gruß, Jens


RE: SQlite Update syntax - Martin.Henz - 09.09.2020 13:46

(09.09.2020 12:00 )jg schrieb:  
(09.09.2020 10:37 )Hubert R. schrieb:  Schade das es zu SQlite kaum Beispiele für LV gibt.
Das liegt aber an der von dir verwendeten SQlite-API.

Wir haben firmenintern ein Toolkit, welches direkt die SQlite-DLL aufruft, da werden einfach die Kommandos in SQL-Syntax als String übergeben.

Da würde dein SQL-Kommando

UPDATE abstract SET recipe=123,mould="hurra",run_status=0,stack_counter_actual=1234,run_time=0,stop_time=0,stack_counter_tar​​get=102,release_2=0,release_3=0,release_4=0,release_5=0,release_6=0,average_cyc​l​e_time=1000 WHERE link_ID=1;

direkt funktionieren.

Gruß, Jens

Ich sehe gerade, dass Hubert das Toolkit von James Powell verwendet. Da geht das auch mit diesem SQL Kommando. Allenfalls das "hurra" (Anführungszeichen anstatt Apostroph) könnte Schwierigkeiten bereiten. Bei SQLite ist es oft noch zugelassen (je nachdem mit welchen Optionen die DLL erstellt wurde).