bde和ADO(200分)

  • 主题发起人 主题发起人 mech
  • 开始时间 开始时间
M

mech

Unregistered / Unconfirmed
GUEST, unregistred user!
如果我用BDE, 用updatesql作为更新,我可以指定主键作为UPDATE语句的关键字,
如表:item
no char(10),
name char(10),
qty integer,其中no是主键,我可以在UPDATESQL的UPDATE中写语句
update item set no=:no,name=:name,qty=:qty
where no=:no
也就是说,where后面只跟主键no,这自然会加快后面更新的速度.

我在用adoquery时,其自动生成的update语句(用PROFILE监视)如下:
update item set no=:no,name=:name,qty=:qty
where no=:no and name=:name and qty=:qty
此语句后跟三个条件,这自然会降低速度.

请问各位怎样在ado中实现bde中的updatesql功能.
 
自动生成的吗?不明白你的意思,我
个人认为影响速度不大。主键已经包含了。
 
Ado本身就可以,不过如何阻止其更新其中的一个表却是一个难题。
 
ado中这样做是为了控制数据库的并发操作的.
一般有三种控制方式:
1、仅主键:就是你想要的那种,如果有人同时修改了主健值,数据更新斥失败了,从而保证数据的一致与完整,
但这时如果你更改了主键外的一个字段,而另外有人同时修改了
相同的字段(主键没有改),这时数据更新仍然会成功,但数据就不一定是你修改的,就会产生数据冲突。
2、主键与修改字段:这时如果有同上种情况一样的并发操作出现,数据的更新就会失败,因为
可以肯定有人同时修改了数据,这样就保证了数据的一致性。但这时如果有人更改了其它的字段,
你的更新还是会保存,也有可能产生数据不一致。
3、所有字段:这是你看到的那种,也是最严格的一种,只有所有数据没有改动才允许你的数据更新。
明白了这些,就可以更改ado的属性选择相应的属性值也实现你想要的操作。
 
既然no是主键了,那对性能应该没有什么影响的,还是相信微软的ado
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
900
SUNSTONE的Delphi笔记
S
I
回复
0
查看
493
import
I
后退
顶部