【发布时间】:2016-03-04 18:43:19
【问题描述】:
这是我第一次使用参数进行查询。 (在 SQL Server 中使用 Delphi Seattle 和 FireDAC)
(我打算在我完成这项工作后使用 DML。)
为什么会出现这个错误:
[FireDAC][Phys][ODBC][Microsoft][SQL Server Native Client 11.0]
[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;
【问题讨论】:
-
注释创建参数的代码并再次运行。错误会消失吗?大多数 DB 驱动程序会自动解析 SQL 并创建参数,使用
AsXXXX将处理 ParamType。我从来不用使用 Delphi 在任何 DB 组件的代码中创建参数。 -
我已经在我的笔记本电脑上使用非常旧的 SQL server 7 和 SQL server 2000 运行了上述代码,并且都运行完美。