【问题标题】:Datasnap query client sideDatasnap 查询客户端
【发布时间】:2013-01-02 17:57:10
【问题描述】:

我不明白如何使用参数,找到一个合适的使用参数的例子有点困难。我确实设法使用它完成工作的客户端数据集过滤器,但我确信它也可以用 sql 完成。 datasnap 不允许这样的查询,我在我的研究中读到我必须使用参数。我只是不明白。我需要一个适当的示例,其中使用 datasnap 设置服务器/客户端,并且可以从类似于 sql 的客户端查询:SELECT * FROM tbl_person WHERE person = 20

这将为我提供 dbgrid 中所有 20 岁的人。就像我说的那样,我已经设法用过滤器做到这一点,但过滤器不是 100% 正确的,一两个奇怪的记录让它出现。

非常感谢您的帮助

【问题讨论】:

  • 您如何将客户端数据集连接到服务器?

标签: delphi-xe datasnap


【解决方案1】:

有很多方法可以使用 ClientDataset 和参数。试试这个。

服务器端:

  1. 在ServerClass上放一个TSqlQuery,在里面输入Sql Statement:

    SELECT * FROM tbl_person WHERE person = :person

    将参数属性设置为正确的参数类型和数据类型。

  2. 放置一个 TDatasetProvider 并连接到 TSQLQuery

  3. 运行服务器。

客户端:

  1. 放一个TDSProviderConnection并连接到服务器并分配ServerClass
  2. 将 TClientDataset 连接到 TDSProviderConnection 并选择 TDatasetProvider 名称。
  3. 右键 TClientDataset 并选择 FetchParams

现在您可以为该参数分配任何值,让 Datasnap 框架完成剩下的工作。

查看以下来源了解更多信息:

【讨论】:

    【解决方案2】:

    设置 SQL 命令:

    qry.SQL.Text := 'SELECT * FROM tbl_person WHERE age = :age';
    

    定义参数类型为整数

    设置参数值:

    qry.ParamByName('age').AsInteger := 20;
    

    打开查询:

    qry.Open;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多