【问题标题】:Parameters in SQL - Delphi 7SQL 中的参数 - Delphi 7
【发布时间】:2013-05-31 06:00:16
【问题描述】:

我正在使用 Delphi 7 和 Access 2007。

我想知道谁能告诉我如何在 SQL 语句和 ADO 中使用参数。

什么是必要的编码等等。对不起,我是 Delphi 的新手。

【问题讨论】:

  • +1 用于询问如何使用参数,而不是使用字符串连接(和 SQL 注入攻击)!

标签: sql delphi delphi-7 ado


【解决方案1】:

只需设置查询的SQL,然后填充参数。当然,使用对您有意义的参数名称;我刚刚以LastNameFirstName 为例。在您编辑问题后,我已更新为使用 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;

【讨论】:

  • 非常感谢您的帮助。很高兴有一个网站可以让您快速获得答案。
  • 使用'select * from'被认为不是一个好主意,尤其是在向初学者展示代码时。最好规定确切的字段名称。
  • @No'amNewman:问题没有问如何写SQL。它询问如何在Delphi中使用参数,这是我回答的。如果问题提供了有关他们正在使用的架构的信息,我会使用不同的东西。我也没有使用真正的桌面名称。不过,感谢您的反馈。 :-)
  • 请注意:在 Oracle SQL 中,我们将值分配给变量,就像使用 := 的 Pascal 一样,这会引发错误,因为 TQuery 认为我们正在定义一个参数。因此,如果您决定使用 Oracle 而不是 Access,请记住将转义添加为 ::= 而不是 :=,以便 Delphi 可以正确读取您的 SQL。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多