Delphi支持參數化SQL語句,不過俺很少用Paramters/Params屬性,一般都是自己構造SQL,
用SQL.Text:='Select * from ..Where ID='''+edit1.text+'''';
不過這種方法要小心SQL注入攻擊哦。
今天改用ADOQuery控件的Paramters屬性,本已為簡單的很,一用發現了不少問題。由於我只使用一個ADOQuery控件,而其中的SQL語句和語句中的參數經常要變,所以剛開始在程序中用了如下代碼:
..........
ADOQ.Parameters.Clear;
ADOQ.Parameters.CreateParameter(...); //創建參數1
ADOQ.Parameters.CreateParameter(...); //創建參數2
ADOQ.SQL.Clear;
ADOQ.SQL.Assign(memo1.text);
............ 可一執行,就有時正常,有時報錯,說什麼不正確的參數設置(用的Access)。
經過兩天的折騰,發現必須使用下面的代碼(真是奇怪):
..........
ADOQ.Parameters.Clear;
Parami:=ADOQ.Parameters.ADDParameter; //創建參數1
Parami.Name:=...; Parami.Value:=...
Parami:=ADOQ.Parameters.ADDParameter; //創建參數2
Parami.Name:=...; Parami.Value:=...
//ADOQ.SQL.Clear; // 該句不能使用,
ADOQ.SQL.Assign(memo1.text);
............