Delphi XE +DBX+SQL Server2008 关于事务回滚问题 本帖最后由 userzhua 于 2011-11-27 23:21:46 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 自己顶一下,跟踪发现得到的tran不管是方法一还是方法二都是nil,我就想问问 如何创建事务 再注明一下。提交的是SQL语句。 最好写在存储过程里面 在存储过程去回滚... 本来回滚就是因为数据连接有问题,你还在Delphi 里面回滚貌似不太好吧. 有可能BeginTransaction无效,或者上个事务还没执行完,开始新事务前,最好先判断一下事务的状态 我的也是XE + sql2008,没有问题varTransaction: TDBXTransaction;OwnsTransaction: Boolean;OwnsTransaction := not Connection.InTransaction;if OwnsTransaction then Transaction := Connection.BeginTransaction;try ... if OwnsTransaction then Connection.CommitFreeAndNil(Transaction);except if OwnsTransaction then Connection.RollbackFreeAndNill(Transaction);end; 楼主第一种方法报错。是因为客户端dm.SQL_Conn用的是DATASNAP连接服务端程序,所以报错,客户端直接连接数据库不会报错。请高手解决,我也不知道应该用什么办法,客户端使用事务。 客户端回滚,如楼上的楼上onlyou13(流浪哥哥)提供的处理代码,服务器存储过程回滚:Create procedure [dbo].[XXXX](...)AS BEGIN TRAN if (...) begin ROLLBACK TRAN select 'Error!' RETURN 1 end ...... SELECT '保存完成!' COMMIT TRAN RETURN 0 请问如何在Window7 系统下 画窗口标题? delphi QReport的数据为什么不会显示?急 ! 高手近来拿分,请教一个算法问题,共开三帖,每帖一百分。 莫名其妙的问题,在线等待解答!! 请刚才回答我问题的朋友来这里一下题目(两个小问题!!!在先等待!!!!)。谢谢你们的帮助! PopupMenu如何动态的产生Submenu呀? 文件改名函数是什么? 堆栈问题 Delphi的文件复制路径问题~~ 日期问题? delphi调用C++dll,多个返回值处理 求解下面的函数??
本来回滚就是因为数据连接有问题,你还在Delphi 里面回滚貌似不太好吧.
或者上个事务还没执行完,开始新事务前,最好先判断一下事务的状态
Transaction: TDBXTransaction;
OwnsTransaction: Boolean;OwnsTransaction := not Connection.InTransaction;
if OwnsTransaction then
Transaction := Connection.BeginTransaction;try ...
if OwnsTransaction then
Connection.CommitFreeAndNil(Transaction);
except
if OwnsTransaction then
Connection.RollbackFreeAndNill(Transaction);
end;
服务器存储过程回滚:
Create procedure [dbo].[XXXX]
(...)
AS
BEGIN TRAN
if (...)
begin
ROLLBACK TRAN
select 'Error!'
RETURN 1
end
...... SELECT '保存完成!'
COMMIT TRAN
RETURN 0