Delphi數據提交方式的比較(50分)

  • 主题发起人 主题发起人 小阿文
  • 开始时间 开始时间

小阿文

Unregistered / Unconfirmed
GUEST, unregistred user!
在delphi中事務控件可用以下兩種方式:
1.使用Database控件的方法和屬性
這種方式用如下來實現
Dbase.StartTransaction;
QY_order.Append;
....
Qy_order.ApplyUpdates;
Qy_order.CommitUpdates;
Dbase.Commit;
     這種方式我一般直接用數據控制部件(如TDbedit)來顯示數據,在數據控制部件
中修改再來提交.
2.使用Query部件中的傳遞式SQL
這種方式是用一般控件顯示數據(如TEdit),在其中編輯數據,再用query的sql
來提交給后台執行存檔:
Qy_order.Sql.Clear
Qy_order.Sql.Add('Insert into Order values (....)'); //簡寫

Qy_order.Sql.Add('Update Order set ..=......');
Qy_order.Execsql
這種方式要后台數據庫支持傳遞式Sql表達式才可以使用(如Sqlserver).
另外這種方式在顯示數據時要寫一個過程來將數據表的當前記錄讀到Tedit中.
我一般是用第一種方法,請問各路高手,這兩種有何優劣?
 
第二种比较直接,不过你要考虑不同数据库之间的差别(不过只要是SQL ANSI 92应该没有问题)
 
使用SQL语言较好,理由如下:
1.速度快;
2.编码容易;
3.比较灵活,特别是在作条件选择时(update...where);
4.较为通用,如果使用的是标准SQL语句;
5.当前绝大多数数据库系统均支持SQL
6.我的个人偏好
 
这种问题真不好讲

我也用后一种

只是, 按照李维的说法和一般层次划分角度来看,

如果在多阶层设计中,

客户端要深刻了解数据库结构

不是好的做法.

但真正做到层次划分上的屏蔽又何其难也

 
看來大家都同意用傳遞式Sql,李維的書正在研究,覺得代碼倒是越來越少,理論卻
越來越多!
有一點:
第一種方法:如果改主從關系中的多條明細記錄的數據,再后一起ApplyUpdates即可
而第二種方法怎么實現?因為我是用這個Update-SQL是一條一條提交的
Qy_order.Sql.Add('Update Order set no=:no,qty=:qty');
 
分少可以加,在這個上面我可真有不少疑問
 
我想用傳遞式sql好
 
后退
顶部