为什么这个带有参数的 FireDAC SQL 服务器查询失败?
Why is this FireDAC SQL Server query with parameters failing?
这是我第一次使用参数进行查询。 (在 SQL 服务器中使用 Delphi Seattle 和 FireDAC)
(我打算在我开始工作后使用 DML。)
为什么会出现此错误:
[FireDAC][Phys][ODBC][Microsoft][SQL Server Native Client 11.0]
[SQL Server]Incorrect syntax near ':'.
使用此查询:
procedure TForm2.Button1Click(Sender: TObject);
var
FDParam: TFDParam;
begin
FDQuery1.SQL.Text := 'CREATE TABLE TestTable (Column1 Int)';
FDQuery1.ExecSQL;
FDQuery1.SQL.Text := 'INSERT INTO TestTable (Column1) VALUES (111)';
FDQuery1.ExecSQL; // works fine
FDParam := FDQuery1.Params.Add;
FDParam.Name := 'Column1';
FDParam.DataType := ftInteger;
FDParam.Paramtype := ptInput;
FDQuery1.SQL.Text := 'INSERT INTO TestTable (Column1) VALUES(:Column1)' ;
FDQuery1.ParamByName('Column1').AsInteger := 222;
FDQuery1.ExecSQL; // FAILS
end;
Ken 和 Johan:感谢您的评论。
这里有人将 连接的 ResourceOptions.ParamCreate 和 ParamExpand 设置为 false。
在 FDQuery 中覆盖它消除了问题。
再次感谢。
这是我第一次使用参数进行查询。 (在 SQL 服务器中使用 Delphi Seattle 和 FireDAC)
(我打算在我开始工作后使用 DML。)
为什么会出现此错误:
[FireDAC][Phys][ODBC][Microsoft][SQL Server Native Client 11.0]
[SQL Server]Incorrect syntax near ':'.
使用此查询:
procedure TForm2.Button1Click(Sender: TObject);
var
FDParam: TFDParam;
begin
FDQuery1.SQL.Text := 'CREATE TABLE TestTable (Column1 Int)';
FDQuery1.ExecSQL;
FDQuery1.SQL.Text := 'INSERT INTO TestTable (Column1) VALUES (111)';
FDQuery1.ExecSQL; // works fine
FDParam := FDQuery1.Params.Add;
FDParam.Name := 'Column1';
FDParam.DataType := ftInteger;
FDParam.Paramtype := ptInput;
FDQuery1.SQL.Text := 'INSERT INTO TestTable (Column1) VALUES(:Column1)' ;
FDQuery1.ParamByName('Column1').AsInteger := 222;
FDQuery1.ExecSQL; // FAILS
end;
Ken 和 Johan:感谢您的评论。
这里有人将 连接的 ResourceOptions.ParamCreate 和 ParamExpand 设置为 false。
在 FDQuery 中覆盖它消除了问题。
再次感谢。