- Warum packst du alle Wörter in ein "`" ???
- Das ";" hat in normalem SQL nix zu suchen
- Rate mal was passiert, wenn der User ein ' (#39) in einem der Editfelder eingibt.
- zusammengebastelte Statements (Die Werte in den Statement string konkatinieren), machen den Cursor- & Statement Cache deiner DB witzlos (das Statement ändert sich ja jedesmal)
Die letzten beiden Punkte lassen sich durch Parameter ganz einfach umgehen. (Und die Lesbarkeit steigt!)
Delphi-Quellcode:
Var
ProcessedRecs :Integer;
...
BEGIN
...
With ADOQuery
Do
Begin
SQL.Text :=
'
UPDATE GaesteBuch' + #10 +
'
SET USER = :i_USER' + #10 +
'
,Password = :i_Password' + #10 +
'
,Topic = :i_Topic' + #10 +
'
,Text = :i_Text' + #10 +
'
WHERE ID = :i_ID';
// Parsen des Statements um Query Parameter zu finden...
Prepared := True;
// Werte an Query Parameter übergeben...
With Parameters
Do
ParamByName('
i_USER').Value := Edit1.Text;
ParamByName('
i_Password').Value := Edit2.Text;
ParamByName('
i_Topic').Value := Edit4.Text;
ParamByName('
i_Text').Value := SynMemo1.Text;
ParamByName('
i_ID').Value := Edit3.Text;
End
ProcessedRecs := ExecSQL;
End;
MessageDlg(IntToStr(ProcessedRecs)+ '
rows updated...', mtInformation, [mbOK], 0);
...
END;
Edit: Ich hatte die Doppelpunkte vergessen!