我如何修复此 SQL 更新语句,因为它 returns 是 delphi 中的语法错误?
How do I fix this SQL update statement as it returns a syntax error in delphi?
每当我尝试 运行 这段代码时,它 returns 是一个语法错误,我遵循了此处 post 编辑的一些格式,但我所做的似乎没有任何效果.我该如何解决这个问题?
with adoQuerysupplier do
begin
sql.Clear;
sql.Add('UPDATE SupplierList');
SQL.Add('SET :Column = :newdetail');
SQL.Add('WHERE :Column1 = :OldDetail');
Parameters.ParseSQL(adoQuerysupplier.SQL.Text, True);
Parameters.ParamByName('Column').Value:= column;
Parameters.ParamByName('Column1').Value:= column;
Parameters.ParamByName('newdetail').Value:= newdetail;
Parameters.ParamByName('OldDetail').Value:= olddetail;
ExecSQL;
所有变量都是字符串,正在成功捕获。这是我的第一个问题,所以如果我有任何格式错误,我提前道歉。如果我需要 post 更多代码,请告诉我。 table 名称不是变量
您不能为字段名称使用参数。如果你真的必须这样做,你需要写一个大的 switch 语句。或者将查询构建为字符串:
sql.Add('UPDATE SupplierList');
SQL.Add('SET [' + column2 + '] = :newdetail');
SQL.Add('WHERE [' + column1 + '] = :OldDetail');
Parameters.ParseSQL(adoQuerysupplier.SQL.Text, True);
Parameters.ParamByName('newdetail').Value:= newdetail;
Parameters.ParamByName('OldDetail').Value:= olddetail;
考虑可能的 SQL 注入!
每当我尝试 运行 这段代码时,它 returns 是一个语法错误,我遵循了此处 post 编辑的一些格式,但我所做的似乎没有任何效果.我该如何解决这个问题?
with adoQuerysupplier do
begin
sql.Clear;
sql.Add('UPDATE SupplierList');
SQL.Add('SET :Column = :newdetail');
SQL.Add('WHERE :Column1 = :OldDetail');
Parameters.ParseSQL(adoQuerysupplier.SQL.Text, True);
Parameters.ParamByName('Column').Value:= column;
Parameters.ParamByName('Column1').Value:= column;
Parameters.ParamByName('newdetail').Value:= newdetail;
Parameters.ParamByName('OldDetail').Value:= olddetail;
ExecSQL;
所有变量都是字符串,正在成功捕获。这是我的第一个问题,所以如果我有任何格式错误,我提前道歉。如果我需要 post 更多代码,请告诉我。 table 名称不是变量
您不能为字段名称使用参数。如果你真的必须这样做,你需要写一个大的 switch 语句。或者将查询构建为字符串:
sql.Add('UPDATE SupplierList');
SQL.Add('SET [' + column2 + '] = :newdetail');
SQL.Add('WHERE [' + column1 + '] = :OldDetail');
Parameters.ParseSQL(adoQuerysupplier.SQL.Text, True);
Parameters.ParamByName('newdetail').Value:= newdetail;
Parameters.ParamByName('OldDetail').Value:= olddetail;
考虑可能的 SQL 注入!