SQLite und UPDATE

Für Themen zu Datenbanken und Zugriff auf diese. Auch für Datenbankkomponenten.
Antworten
helier
Beiträge: 7
Registriert: Fr 21. Mär 2014, 10:23
OS, Lazarus, FPC: Windows Vista, Lazarus 1.2.0
Wohnort: Kerpen

SQLite und UPDATE

Beitrag von helier »

Ich habe eine kleine Adressverwaltung mit SQLite geschrieben. Bis auf das Ändern funktioniert es gut. Nur beim
UPDATE gibt es Probleme, es gibt keine Fehlermeldung, aber es erfolgt auch keine Änderung im Record.
Auch mit Navigator und Datasource habe ich keine Wirkung von UPDATE.
Wer kann mir helfen.

Meine UPDATE-Zeile:
SQLQuery1.SQL.text:='UPDATE tblMitglied SET SQLQuery1.Fields[3]=(:weg) WHERE SQLQuery1.Fields[1]=(:nme)';

mse
Beiträge: 2013
Registriert: Do 16. Okt 2008, 10:22
OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.6,git master FPC 3.0.4,fixes_3_0)
CPU-Target: x86,x64,ARM

Re: SQLite und UPDATE

Beitrag von mse »

Was meinst du mit "keine Änderung in Record"? Die Änderung wird nicht in die Datenbank geschrieben? Dann fehlt ein <transaction>.commit() oder commitretaining(). "SQLQuery1.Fields[3]" und "SQLQuery1.Fields[1]" sollten eigentlich eine Fehlermeldung erzeugen, da dies bestimmt nicht die Feldnamen sind.

MmVisual
Beiträge: 1581
Registriert: Fr 10. Okt 2008, 23:54
OS, Lazarus, FPC: Winuxarm (L 4 FPC 3.2.2)
CPU-Target: 32/64Bit

Re: SQLite und UPDATE

Beitrag von MmVisual »

helier hat geschrieben: Meine UPDATE-Zeile:
SQLQuery1.SQL.text:='UPDATE tblMitglied SET SQLQuery1.Fields[3]=(:weg) WHERE SQLQuery1.Fields[1]=(:nme)';
Gibt es in der Tabelle überhaupt ein Feld mit dem Name "SQLQuery1.Fields[3]"?
In einem String kann man nicht irgend ein Stück vom Quellcode rein schreiben.
EleLa - Elektronik Lagerverwaltung - www.elela.de

helier
Beiträge: 7
Registriert: Fr 21. Mär 2014, 10:23
OS, Lazarus, FPC: Windows Vista, Lazarus 1.2.0
Wohnort: Kerpen

Re: SQLite und UPDATE

Beitrag von helier »

Hallo mse und MnVisual,
danke für eure Hilfe, aber richtig weitergekommen bin ich nicht.
Unten ist Datei und die UPDATE-Zeile.
Wer hat für mich ein Programmstück mit SQLite und UPDATE.

SQLite-Datei:
SqlQuery1.SQL.text:= 'Insert into tblMitglied Values (NULL, :Nach, :Vor, :Stra, :PLZ, :Wohn)';

meine UPDATE-Zeile ohne Funktion aber keine Fehlermeldung:
SQLQuery1.SQL.text:='UPDATE tblMitglied 'SET stra =''Angerstr. 12'' WHERE nach like ''Müller'' ';

MmVisual
Beiträge: 1581
Registriert: Fr 10. Okt 2008, 23:54
OS, Lazarus, FPC: Winuxarm (L 4 FPC 3.2.2)
CPU-Target: 32/64Bit

Re: SQLite und UPDATE

Beitrag von MmVisual »

Poste doch mal bitte Dein komplettes Projekt als ZIP. Das was Du hier schreibst ist mehr oder weniger Chinesisch für den Compiler.
EleLa - Elektronik Lagerverwaltung - www.elela.de

helier
Beiträge: 7
Registriert: Fr 21. Mär 2014, 10:23
OS, Lazarus, FPC: Windows Vista, Lazarus 1.2.0
Wohnort: Kerpen

Re: SQLite und UPDATE

Beitrag von helier »

Das UPDATE-Problem ist gelöst.

Gänsefüßchen, Hochkomma, Plus, Variable, Plus, Hochkomma, Gänsefüßchen ...

Beispiel:
tx3:='Lieselotte';
IDNr:='7';
sqlquery1.close;
sqlquery1.SQL.text:='UPDATE tblPers SET VName="'+tx3+'" WHERE ID= "'+IDNr+'" ';
SQLQuery1.ExecSQL;
SQLTransaction1.commit;

Lion
Beiträge: 197
Registriert: Mo 24. Mär 2014, 09:58

Re: SQLite und UPDATE

Beitrag von Lion »

helier hat geschrieben:Das UPDATE-Problem ist gelöst.

Gänsefüßchen, Hochkomma, Plus, Variable, Plus, Hochkomma, Gänsefüßchen ...

Beispiel:
tx3:='Lieselotte';
IDNr:='7';
sqlquery1.close;
sqlquery1.SQL.text:='UPDATE tblPers SET VName="'+tx3+'" WHERE ID= "'+IDNr+'" ';
SQLQuery1.ExecSQL;
SQLTransaction1.commit;
Ich bin keine DB Experte, aber bist Du sicher, dass Dein Code gegen SQL-Injection geschützt ist? Also ich würde es so lösen:

Code: Alles auswählen

 
IDNr:='7';
SQLQuery1.SQL.Text := 'UPDATE tblPers SET VName = :VName WHERE ID = '+ IDNr +'';
SQLQuery1.ParamByName('VName').AsString := 'Lieselotte';
 
Somit kommt man mit den ganzen "Gänsefüßchen, Hochkomma, Plus, Variable" nicht durcheinander. Das sieht auch besser und überschaubar und die Variable tx3 ist auch gespart. :wink:

helier
Beiträge: 7
Registriert: Fr 21. Mär 2014, 10:23
OS, Lazarus, FPC: Windows Vista, Lazarus 1.2.0
Wohnort: Kerpen

Re: SQLite und UPDATE

Beitrag von helier »

Hallo Lion,
ich danke für Deine Hilfe, besonders für den Hinweis auf SQL-Injection.
Gruß helier

Antworten