A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 赵国梁 中级黑马   /  2012-2-28 20:33  /  2058 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

ADO.NET中事务怎么写的,有没有比较了解的同学,帮一下忙,给我讲解一下。

评分

参与人数 1技术分 +1 收起 理由
郑文 + 1

查看全部评分

3 个回复

倒序浏览
举个事例说明,以张三向李四在银行转账为例:
  1. BEGIN TRANSACTION
  2. DECLARE @errorSum INT
  3. SET @errorSum=0
  4. UPDATE bank SET saveMoney=saveMoney-1000 WHERE customerName='张三'
  5. SET @errorSum=@errorSum+@@ERROR
  6. UPDATE bank SET saveMoney=saveMoney+1000 WHERE customerName='李四'
  7. SET @errorSum=@errorSum+@@ERROR
  8. IF @errorSum<>0
  9.    BEGIN
  10.       PRINT '交易失败,回滚事务'
  11.       ROLLBACK TRANSACTION
  12.    END
  13. ELSE
  14.    BEGIN
  15.       PRINT '交易成功,提交事务'
  16.       COMMIT TRANSACTION
  17.    END
  18. GO
复制代码

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
成刚 发表于 2012-2-29 11:44
举个事例说明,以张三向李四在银行转账为例:

你这个是SQL中实物的写法,我问的是ADO.NET中事务的写法!
回复 使用道具 举报
赵国梁 发表于 2012-2-29 12:28
你这个是SQL中实物的写法,我问的是ADO.NET中事务的写法!

不好意思,有点马虎了哈!
  1. SqlConnection conn = new SqlConnection("Data Source=.;uid=sa;passWord=;database = BankSystem");
  2.     conn.Open();
  3.     //启用事务
  4.     SqlTransaction tran = conn.BeginTransaction();
  5.     SqlCommand cmd = new SqlCommand();
  6.     cmd.Connection = conn;
  7.     cmd.Transaction = tran;
  8.     try
  9.     {
  10.             cmd.CommandText = "UPDATE bank SET saveMoney=saveMoney-1000 WHERE customerName='张三'";
  11.            cmd.ExecuteNonQuery();
  12.             cmd.CommandText = "UPDATE bank SET saveMoney=saveMoney+1000 WHERE customerName='李四'";
  13.             cmd.ExecuteNonQuery();
  14.             tran.Commit();
  15.             MessageBox.Show("事务提交成功!");
  16.     }
  17.     catch(Exception ex)
  18.     {
  19.             tran.Rollback();
  20.             MessageBox.Show("事务提交失败!"+ex.Message);
  21.     }
复制代码

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马