asta的事务处理如何实现?(100分)

  • 主题发起人 主题发起人 qqnm
  • 开始时间 开始时间
Q

qqnm

Unregistered / Unconfirmed
GUEST, unregistred user!
请问在asta3的客户端事务处理如何实现啊?不要用applyupdate()方法,因为这个方法用起来很不方便,要配合dbgrid等来使用,不能用sql语句来写,很不灵活。
例如我有1000条记录需要更新,只有这1000条记录都成功时才commit,如果有任何一条记录更新不成功,则rollback刚才所有的操作.
我也看了其他DFW的帖子,他们提到了以下的做法:
=========================================
在客户端的AstaClientSocket中写下面的代码:
AstaClientSocket1.StartTransaction //启动
try
你的操作1;
....操作2;
AstaClientSocket1.EndTransaction(True);//提交
except
AstaClientSocket1.EndTransaction(False);
//回滚
end;
======================================================
但是我试了上面的办法(我用的是ADO和Oracle数据库),当程序执行到AstaClientSocket1.StartTransaction时,客户端程序就死掉了,不知是什么原因,看了asta自带的例子,没有一个使用到AstaClientSocket1.StartTransaction这个过程的,不知道有没有DFW这样用过阿?
另外,有没有asta实现事务的其他方法,请各位DFW们多帮帮忙啊!
 
自己顶一下,大家帮帮忙阿!
 
AstaClientSocket1
这个没有打开吧,
这样做下:
if not AstaClientSocket1.Connected then
AstaClientSocket1.Connected := True;
AstaClientSocket1.StartTransaction;
 
我试试先
 
to:Neo_leaf
还是不行啊,还是执行到AstaClientSocket1.StartTransaction就死掉了,不知道您有没有写好的例子?能否发上来看看,谢谢!
 
强烈关注,我用applyupdate()方法,更新失败在客户端也不能检测到返回值,与帮助文件说明的不一样啊。
 
..............
 
Asta控件被你这么用?太浪费了,赶紧改
AstaClientSocket1.SendDataSetTransaction(AstaCltDS.Name, [AstaCltDS]);
AstaClientSocket1.SendSQLString.....
AstaClientSocket1.SendSQLStrings.....记不得了
 
foxphone2003大侠能否在说的详细些?
因为我的客户端是读文本文件然后再将这些记录入数据库的(如果入库不成功的话,需要全部数据都回滚),在这里客户不需要做什么太多的操作,因此不能用dbgrid控件来操作数据。
我看了asta的帮助文件,他的思想是只在客户端写select语句,而insert,update等语句是通过dbgrid等控件由asta自动生成sql语句并发送到服务器端的,我的做法虽然与asta的思想不一致,但我觉得这样写的话比较方便,而且自己也好控制,不知foxphone2003大侠有没有好的例子供小弟借鉴一下?(我用的服务器端是asta自己带的ado的demo程序。)
 
日后开发可能会遇到这个问题。
关注中
 
qqnm兄,你好,你的QQ是多少?我也是在事务这个地方被卡住啊,asta的客户端事务示例太简单了,而且没法知道更新成功与否.
 
ASTA事务处理主要在服务端。客户端只是发带有事务处理的命令:
foxphone2003大侠提到:
AstaClientSocket1.SendDataSetTransaction(AstaCltDS.Name, [AstaCltDS]);
AstaClientSocket1.SendSQLString.....
AstaClientSocket1.SendSQLStrings.....等等
还有就是:
astaclientdataset1.ExecSQLTransaction
 
asta本身并不支持事务的功能,都是由三方数据访问组件提供的。且asta的数据处理方面在代码本身有很多的漏洞,不建议在数据安全性要求比较高的项目中使用,对此我有比较惨痛的教训。倒是建议对文件传输和消息方面使用asta,其功能确实无与伦比。
 
后退
顶部