【发布时间】:2013-05-31 06:00:16
【问题描述】:
我正在使用 Delphi 7 和 Access 2007。
我想知道谁能告诉我如何在 SQL 语句和 ADO 中使用参数。
什么是必要的编码等等。对不起,我是 Delphi 的新手。
【问题讨论】:
-
+1 用于询问如何使用参数,而不是使用字符串连接(和 SQL 注入攻击)!
我正在使用 Delphi 7 和 Access 2007。
我想知道谁能告诉我如何在 SQL 语句和 ADO 中使用参数。
什么是必要的编码等等。对不起,我是 Delphi 的新手。
【问题讨论】:
只需设置查询的SQL,然后填充参数。当然,使用对您有意义的参数名称;我刚刚以LastName 和FirstName 为例。在您编辑问题后,我已更新为使用 TADOQuery 而不仅仅是 TQuery。
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('SELECT * FROM MyTable');
ADOQuery1.SQL.Add('WHERE LastName = :LastName AND');
ADOQuery1.SQL.Add('FirstName = :FirstName');
// Populate the parameters and open it
ADOQuery1.Parameters.ParamByName('LastName').Value := 'Jones';
ADOQuery1.Parameters.ParamByName('FirstName').Value := 'James';
ADOQuery1.Open;
// Use query results
ADOQuery1.Close;
// Populate parameters with new values and open again
// Populate the parameters and open it
ADOQuery1.Parameters.ParamByName('LastName').Value := 'Smith';
ADOQuery1.Parameters.ParamByName('FirstName').Value := 'Sam';
ADOQuery1.Open;
// Use new query results
ADOQuery1.Close;
【讨论】:
:= 的 Pascal 一样,这会引发错误,因为 TQuery 认为我们正在定义一个参数。因此,如果您决定使用 Oracle 而不是 Access,请记住将转义添加为 ::= 而不是 :=,以便 Delphi 可以正确读取您的 SQL。