Delphi 2010 dbExpress中等同于TUpdateSQL的组件是什么?

4

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

  • 首先,我是否需要放弃BDE?(我会的,但是如果可能的话,我更愿意分阶段进行)

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

  • 最后,是否有与dbExpress中的TUpdateSQL相当的东西?(或者其他什么)

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

请帮帮我~~~

非常感谢。

4个回答

3

1) 您一定要从BDE迁移到DbExpress。BDE是一种过时且已弃用的技术

您可以阅读以下文章

2) DbExpress是与SQL Server通信的更好选择,但我更喜欢ADO,因为它是SQL Server的本机。

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

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

再见。


1
在TDataSetProvider上有一个名为BeforeUpdateRecord的事件,它基本上是一种更手动的方式来执行TUpdateSQL。
您必须自己创建SQL,然后通过TADOQuery等更新它。
但是它具有与TUpdateSQL中相同的旧值和新值的基本要素。
抱歉这是C++,我不知道dehpli,但我认为它基本上是相同的。
DeltaDS->FieldByName("id")->NewValue;

并且

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

同时你需要设置

Applied = true;

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

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

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


0
使用dbExpress的SQLQuery组件,可以编写诸如以下的“查询”:
update <table>
set value = :v1
where something = :v2

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


1
他正在询问 TUpdateSQL 组件,它允许替换 BDE 组件(TTable、TQuery)生成的 SQL 语句为开发人员编写的语句。它主要用于允许在带有连接的查询中进行更新操作。 - Fabricio Araujo
当我说“更新”时,指的是插入、删除和更新命令。 - Fabricio Araujo
不能使用连接进行插入/删除/更新操作,只有“select”语句可以使用连接。 - No'am Newman
我们正在谈论BDE组件,是的,如果您在查询对象上创建SQL以进行插入、更新和删除,并将其放在TUpdateSQL上,它们就可以实现。当BDE组件收到Post命令时,它会使用TUpdateSQL组件上的SQL将数据写入数据库。 - Fabricio Araujo

0
使用ClientDatasets和提供程序,您可以使用具有通用OnUpdateRecord(?现在无法记住确切名称)处理程序的TDatasetProvider,并使其使用TUpdateSQL上使用的sqls。
这只是一个想法,在您无法使用第三方组件的情况下...

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接