关于Delphi的缓存更新技术和TUpdateSQL元件的使用(100分)

  • 主题发起人 主题发起人 曾明辉
  • 开始时间 开始时间

曾明辉

Unregistered / Unconfirmed
GUEST, unregistred user!
小弟很想了解一下Delphi中的“缓存更新”技术。
此外,在使用TUpdateSQL元件时,我知道要使用SetParams过程来读参数,但它只有一个UpdateKind参数,而TUpdateSQL元件的SQL中的变量参数是在哪里赋的值呢?
小弟第一次拜访贵地,不知所提问题的深浅,考虑到只有200分,就先设定该问题为100分吧。
请各位多多捧场!
 
TUpdateSql由于是和TQuery的UpdateObject相关联的,因此其中的SQL变量是在对
TQUERY控制进行EDIT时指定。

例如:
Query: TQuery;
UpdateSQl: TUpdateSQl;

Query.Sql:= 'SELECT ROWID,NO,NAME,SEX FROM EMP';
UpdateSql.ModifySql := 'update EMP SET NO=:NO,NAME =:NAME,SEX=:SEX WHERE ROWID = :OLD_ROWID';
Query.UpdateObject := UpdateSql;

....

with Query do
begin
Edit;
FieldByName ('NAME').AsString := '方杉';
ApplyUpdates;
end;

则通过UPDATESQL修改了NAME字段
 
'缓存更新'请参见DELPHI4光盘自带的DOCUMENT了。
UpdateSql可用下述属性对关联的双表或多表进行修改操作。
DeleteSql
InsertSql
ModifySql
具体方法参见DELPHI4的帮助,有例子。
 
你可以试一下双击TUpdateSql,再genernate sql就可以实现了。
 
对几位仁兄的关注表示感谢。
想向volan兄问一下:with Query do
begin
Edit;
FieldByName ('NAME').AsString := '方杉';
ApplyUpdates;
end;
以上语句更新的是哪一个记录,是当前记录吗?另外,将数据库中的记录更新的话,那数据库会自动将相关记录都更新吗?
 
这根据你的TUpdateSQl.ModifySql的条件来定。
我提供的例子是适合于Oracle数据库的,因为Oracle提供标识数据库唯一记录的记录号ROWID,因此例子中只是修改当前记录。

如果你的Where条件不能唯一标识记录,则可能修改到同时满足条件的记录。
 
还有什么问题吗?因该可以了吧?
 
接受答案了.
 
我对分数分配有意见,CJ太偏心了嘛!!!!!!
 
后退
顶部