Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!
06.09.2020, 12:01 (Dieser Beitrag wurde zuletzt bearbeitet: 06.09.2020 12:02 von Hubert R..)
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_target=102,release_2=0,release_3=0,release_4=0,release_5=0,release_6=0,average_cycle_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=,average_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
Anzeige
06.09.2020, 14:26 (Dieser Beitrag wurde zuletzt bearbeitet: 06.09.2020 14:29 von Martin.Henz.)
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.
(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_target=102,release_2=0,release_3=0,release_4=0,release_5=0,release_6=0,average_cycle_time=1000 WHERE link_ID=1;
direkt funktionieren.
Gruß, Jens
Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)
!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!
(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_target=102,release_2=0,release_3=0,release_4=0,release_5=0,release_6=0,average_cycle_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).