Einzelnen Beitrag anzeigen

Robert_G
(Gast)

n/a Beiträge
 
#3

Re: Falsche Anfrage

  Alt 22. Mär 2004, 21:41
  • 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!
  Mit Zitat antworten Zitat