【问题标题】:Equivalent to TUpdateSQL in Delphi 2010 dbExpress?相当于 Delphi 2010 dbExpress 中的 TUpdateSQL?
【发布时间】:2009-10-28 03:32:42
【问题描述】:

我计划将 Delphi 6 BDE 应用程序迁移到 Delphi 2010...

  • 首先,我必须离开 BDE 吗? (我会,但如果可能的话,我更喜欢分阶段进行)

  • 其次,dbExpress 是最佳选择吗? (我使用的是 MS SQL)

  • 最后,在 dbExpress 中是否有 TUpdateSQL 的等价物? (或其他)

我有很多代码从网格中更新只读查询(使用 TUpdateSQL 和 ApplyUpdate)。

请帮忙~~~

非常感谢。

【问题讨论】:

    标签: delphi delphi-2010 dbexpress bde


    【解决方案1】:

    1) 您肯定必须从 BDE 迁移到 DbExpress。 BDE 是一种obsolete and deprecated 技术。

    您可以阅读这些文章

    2) DbExpress 是比 BDE 更好的替代方案来与 sql server 通信,但我更喜欢 ADO,因为它是 SQL Server 的本机。

    3) dbExpress 没有类似于 TUpdateSQL 的组件,但是 Luxene 有一个 TDBXUpdateSQL,它是 dbExpress eXtension 组件的一部分。

    您还可以查看ETHEAInstantBDExpress是一个组件库,可以将旧的 BDE 应用程序无缝迁移到 dbExpress 技术)来自ETHEA

    再见。

    【讨论】:

      【解决方案2】:

      在 TDataSetProvider 上有一个名为 BeforeUpdateRecord 的事件,它基本上是一种更手动的方式来执行 TUpdateSQL

      您必须自己创建 SQL,然后对其进行更新。(通过 TADOQuery 等)

      它与 TUpdateSQL 中的旧值和新值具有相同的基础

      sry 这是 c++,我不知道 dehpli,但我认为基本相同

      DeltaDS->FieldByName("id")->NewValue;
      

      DeltaDS->FieldByName("id")->OldValue;
      

      你也必须设置

      Applied = true;
      

      这样它就不会在您手动完成更新后尝试进行更新

      这里有一些链接应该会有所帮助 About BeforeUpdateRecord

      如果您需要更多信息,请添加评论,我会回复您

      【讨论】:

        【解决方案3】:

        使用 dbExpress 的 SQLQuery 组件,可以编写“查询”,例如

        update <table>
        set value = :v1
        where something = :v2
        

        然后调用“execsql”方法来物理更新表。

        【讨论】:

        • 他在询问 TUpdateSQL 组件,该组件允许将 BDE 组件(TTable、TQuery)生成的 SQL 替换为开发人员编写的 SQL。它主要用于允许通过连接更新查询。
        • 当我说“更新”时,请阅读:插入、删除和更新命令。
        • 不能通过连接插入/删除/更新。只有“选择”语句可以有连接。
        • 我们谈论的是 BDE 组件,是的,如果您在查询对象上创建用于插入、更新和删除的 SQL 并将其放在 TUpdateSQL 上,那么它们可以。当 bde 组件收到 Post 命令时,它使用 TUpdateSQL 组件上的 SQL 将数据写入数据库
        【解决方案4】:

        使用 ClientDatasets 和提供程序,您可以将 TDatasetProvider 与通用 OnUpdateRecord(?,现在不记得确切名称) 处理程序一起使用,并使其使用 您在 TUpdateSQL 上使用的 sql。

        只是一个想法,以防您无法使用 3rd 方组件....

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2023-03-26
          • 1970-01-01
          • 1970-01-01
          • 2016-01-26
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多