Hast ja Recht.
Also dann zur Vollständigkeit. So sollte das eigentlich ein besseres
SQL-Statement sein:
Delphi-Quellcode:
procedure TfrmGettingStarted.Button1Click(Sender: TObject);
begin
if dbMain.Connected then
begin
qryproducts.FetchOptions.AutoClose := False;
qryproducts.SQL.Clear;
qryproducts.SQL.Add('SELECT *');
qryproducts.SQL.Add('FROM kd_data') ;
qryproducts.SQL.Add(' WHERE kd_data.kd_vname like :Vorname');
qryproducts.SQL.ParamByName('Vorname').AsString := Edit1.Text;
qryproducts.Open; // [Orders] table rows are accessable here
end;
end;
Vorteile:
1. Gefahr von Code-Injection verringert
2. Firlefanz mit QuotedStr oder wildem Anführungszeichengewedel entfällt
3. Bessere Lesbarkeit (siehe dazu Punkt 2)
4. Das Prepare funktioniert besser
Nachteile:
In sehr seltenen Fällen muss man den Type des Parameters noch definieren, weil die automatische Umsetzung des Parameters in den richtigen Typ nicht funktioniert. Das passiert nur sehr selten und wirkt sich selbst dann nicht immer aus. Hatte ich in den letzten 5 Jahren nur einmal.
Außerdem gleich mal das Exit rausgeschmissen.