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); ............
从Delphi的帮助上也没发现什么,真是不理解,还有如果SQL 语句是非Select形则两种方法均可。 ??? 准备阅读Delphi ADOQuery的源代码
|