2016-03-04 70 views
1

這是我第一次用參數做查詢。 (在SQL Server用Delphi西雅圖和FireDAC)爲什麼FireDAC SQL Server查詢參數失敗?

(我打算使用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; 
+3

評論創建參數並再次運行的代碼。錯誤消失了嗎?大多數數據庫驅動程序會解析SQL並自動創建參數,並使用'AsXXXX'來處理參數類型。我從來沒有必須在使用Delphi的任何數據庫組件的代碼中創建參數。 –

+1

我已經在我的筆記本電腦上運行上面的代碼,使用一個非常古老的SQL Server 7 **和** SQL Server 2000,並且都運行完美。 – Johan

回答

2

肯和約翰:謝謝您的意見。

有人在這裏設置了連接的 ResourceOptions.ParamCreate和ParamExpand爲false。

覆蓋在FDQuery中消除了這個問題。

再次感謝您。

+0

然後,請將此作爲答案,以幫助未來的搜索者。 – Mawg