Delphi 为什么此带有参数的FireDAC SQL Server查询失败?
这是我第一次使用参数进行查询。(在SQL Server中使用Delphi和FireDAC) (我计划在这项工作完成后使用DML。) 为什么我会出现这个错误: [FireDAC][Phys][ODBC][Microsoft][SQL Server本机客户端11.0]Delphi 为什么此带有参数的FireDAC SQL Server查询失败?,delphi,firedac,Delphi,Firedac,这是我第一次使用参数进行查询。(在SQL Server中使用Delphi和FireDAC) (我计划在这项工作完成后使用DML。) 为什么我会出现这个错误: [FireDAC][Phys][ODBC][Microsoft][SQL Server本机客户端11.0] “:”附近的[SQL Server]语法不正确 使用此查询: procedure TForm2.Button1Click(Sender: TObject); var FDParam: TFDParam; begin FDQue
“:”附近的[SQL Server]语法不正确 使用此查询:
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;
肯和约翰:谢谢你的评论 此处有人已将连接的ResourceOptions.ParamCreate和ParamExpand设置为false 在FDQuery中重写它可以消除这个问题
再次感谢你 注释创建参数的代码并再次运行。错误消失了吗?大多数DB驱动程序将解析SQL并自动创建参数,使用
AsXXXX
将处理参数类型。我从来没有使用Delphi在任何DB组件的代码中创建过参数。我已经在我的笔记本电脑上使用非常旧的SQL server 7和SQL server 2000运行了上述代码,并且都运行得非常完美。然后,请将此作为答案,以帮助未来的搜索者。