![]() |
Datenbank: Firebird • Version: 2.1 • Zugriff über: ZEOS 6.6.x
Verständnisproblem - Warum funktioniert mein DELETE nicht?
Hi ihr,
irgendwie stehe ich gerade auf dem Schlauch. Dieser Code:
Delphi-Quellcode:
soll einen bestimmten Nutzer aus der Datenbank entfernen. Der Name existiert und wird korrekt übergeben. Die Tabelle existiert, die Spalte existiert - und dennoch: Aus der Datenbank wird der Eintrag nicht gelöscht. Jemand ne Idee, woran das liegen kann/was ich falsch mache? :gruebel:
procedure TDGHBDatabase.DeleteUserByName(Name: String);
var DeleteUserQuery : TZQuery; begin DeleteUserQuery := TZQuery.Create(nil); with DeleteUserQuery do begin Connection := fConnection; ParamCheck := true; SQL.Text := 'DELETE FROM USERS WHERE USER_NAME = :user '; ParamByName('user').AsString := Name; ExecSQL; end; DeleteUserQuery.Free; end; |
Re: Verständnisproblem - Warum funktioniert mein DELETE nich
Ich denke mir, das with in Verbindung mit "Name" ist Schuld. Geht es so?
Delphi-Quellcode:
procedure TDGHBDatabase.DeleteUserByName(const sName: String);
var DeleteUserQuery : TZQuery; begin DeleteUserQuery := TZQuery.Create(nil); try with DeleteUserQuery do begin Connection := fConnection; ParamCheck := true; SQL.Text := 'DELETE FROM USERS WHERE USER_NAME = :user '; ParamByName('user').AsString := sName; ExecSQL; end; finally DeleteUserQuery.Free; end; end; |
Re: Verständnisproblem - Warum funktioniert mein DELETE nich
Jetzt weiß ich, warum "with" so "gefährlich" ist. :wall:
Danke, Detlef, daran lags. ;) |
Re: Verständnisproblem - Warum funktioniert mein DELETE nich
hat sich erledigt
|
Re: Verständnisproblem - Warum funktioniert mein DELETE nich
In den meisten Fällen vermeide ich das with auch, dann hat man eine potentielle Fehlerquelle weniger :zwinker:
@Tyrael: Der Doppelpunkt ist schon richtig, da es sich um ein parametrisiertes Statement handelt. |
Re: Verständnisproblem - Warum funktioniert mein DELETE nich
Stimmt wohl - nur ist es halt so... bequem.. :angel2:
|
Re: Verständnisproblem - Warum funktioniert mein DELETE nich
Zitat:
Gruß |
Re: Verständnisproblem - Warum funktioniert mein DELETE nich
Deshalb haben bei mir Argumente einer Funktion generell ein A vorne :angel2: dann heisst halt AName un geht ;)
|
Re: Verständnisproblem - Warum funktioniert mein DELETE nich
Der Übergabeparameter sollte so deklariert sein:
Delphi-Quellcode:
"UserName" ist einfach klarer und aussagekräftiger als nur "Name".
procedure TDGHBDatabase.DeleteUserByName(const UserName: String);
Also ich spare mir die ![]() Man kann natürlich unterschiedlicher Meinung sein aber ich folge hier dem sehr empfehlenswerten Buch "Clean Code: A Handbook of Agile Software Craftsmanship". |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:50 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz