Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi UPDATE führt zu Exception (https://www.delphipraxis.net/139825-update-fuehrt-zu-exception.html)

Balu der Bär 6. Sep 2009 10:19

Datenbank: Firebird Embedded • Version: 2.1 • Zugriff über: ZEOS 6.6.5

UPDATE führt zu Exception
 
Moin,

ich möchte einen simplen Eintrag in meiner DB ändern.

Delphi-Quellcode:
procedure TDatabase.UpdateValue(AField, AID, AValue: String);
var
  InsertDataQuery: TZQuery;
begin
  InsertDataQuery := TZQuery.Create(nil);
    with InsertDataQuery do
      begin
        Connection := fConnection;
        ParamCheck := true;
        SQL.Text :=Format('UPDATE KUNDE SET %s = ''%s'' WHERE ID = %s)',[AField, AValue, AID]);
        ExecSQL;
      end;
      InsertDataQuery.Free;
end;
Mit der "Übersetzung" scheint alles zu klappen, trotzdem bekomme ich bei jedem Aufruf eine Exception:
Zitat:

Im Projekt Project1.exe ist eine Exception der Klasse EZSQLException mit der Meldung 'SQL Error: Dynamic SQL Error SQL error code = -104 Token unknown - line 1, column 47 ). Error Code: -104. Invalid token The SQL: UPDATE KUNDE SET K_NAME = 'Peter' WHERE ID = 3); ' aufgetreten.
Ich habe es auch schon mit "" statt '' versucht, Resultat bleibt dasselbe. Die Tabelle heißt KUNDE und K_NAME existiert auch. In dem Feld steht bereits ein Wert drinnen.

Hat jemand eine Idee was da los ist?

Danke

Sir Rufo 6. Sep 2009 10:24

Re: UPDATE führt zu Exception
 
Delphi-Quellcode:
Format('UPDATE KUNDE SET %s = ''%s'' WHERE ID = %s)',[AField, AValue, AID]);
was kommt denn da raus?
SQL-Code:
UPDATE KUNDE SET TESTFELD = 'TEST' WHERE ID = 3)
Wenn du die Klammer am Ende mal entfernst, dann wird es schon gehen :mrgreen:

mkinzler 6. Sep 2009 10:25

Re: UPDATE führt zu Exception
 
u hast ein Klammer zu viel im Abfragestring:
Delphi-Quellcode:
SQL.Text :=Format('UPDATE KUNDE SET %s = ''%s'' WHERE ID = %s;',[AField, AValue, AID]);

DeddyH 6. Sep 2009 10:25

Re: UPDATE führt zu Exception
 
Im anderen Thread wurden doch bereits Parameter angesprochen.
Delphi-Quellcode:
procedure TDatabase.UpdateValue(AField, AID, AValue: String);
var
  InsertDataQuery: TZQuery;
begin
  InsertDataQuery := TZQuery.Create(nil);
  try
    with InsertDataQuery do
      begin
        Connection := fConnection;
        ParamCheck := true;
        SQL.Text :=Format('UPDATE KUNDE SET %s = :param WHERE ID = %s',[AField, AID]);
        ParamByName('param').Value := AValue;
        ExecSQL;
      end;
  finally
    InsertDataQuery.Free;
  end;
end;
Allerdings ist es wahrscheinlich flexibler, AValue nicht als String, sondern als Variant zu deklarieren.

[edit] Exception-Handling hinzugefügt [/edit]

Balu der Bär 6. Sep 2009 10:29

Re: UPDATE führt zu Exception
 
Zitat:

Zitat von Sir Rufo
Wenn du die Klammer am Ende mal entfernst, dann wird es schon gehen :mrgreen:

Danke, so blind muss man erstmal sein. :wall:

@deddy: ich versuchs mir zu merken. *g*


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:07 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz