定义一个transaction,怎么能够让它通过一次commit来执行两个update操作呢?

gpz_dalian 2008-01-16 04:50:02
做了一个模拟银行转账的程序,要求对两个账户的更新操作,
怎么能通过一个transaction.commit来完成?
只有两个账户都操作成功才进行commit
否则回滚

如下的操作把两个操作分开了,这样有问题。
想把这两个操作和成为一次提交,应该怎么办?
command.CommandText = "UPDATE ACCOUNTS_A SET AMOUNT = AMOUNT - " & TranAmount & " WHERE NAME ='He'"
command.ExecuteNonQuery()
transaction.Commit()

command2.CommandText = "UPDATE ACCOUNTS_B SET AMOUNT =" & TranAmount & " + AMOUNT WHERE NAME ='Me'"
command2.ExecuteNonQuery()
transaction2.Commit()
...全文
239 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiafan 2008-01-21
  • 打赏
  • 举报
回复
SQL语句是可以同时进行好几个语句操作的啊。
两个语句之前用分号隔开就行。
gpz_dalian 2008-01-17
  • 打赏
  • 举报
回复
呵呵,俺找到方法了

不好意思,一开始我没有把具体情况说清楚。
这是我自己做的一个com+组件
可以使用
ContextUtil.SetComplete()
来提交多个事务
//////////////////////////////////////////////

Try
command.CommandText = "UPDATE... "
command.ExecuteNonQuery()

command2.CommandText = "UPDATE... "
command2.ExecuteNonQuery()

'通过下面这一句就可以将上面的更新操作同时提交了
ContextUtil.SetComplete()

Catch ex As Exception
ContextUtil.SetAbort()
Throw New DataException("Error withdrawing", ex)
Finally
conn.Close()
conn2.Close()
End Try
足球中国 2008-01-16
  • 打赏
  • 举报
回复
意件同4楼,顶一下.
lsgis2001 2008-01-16
  • 打赏
  • 举报
回复
本来是想顶一下一楼的.看到五楼,发现没这么用过.
不管怎么样,建议加上try 在错了后也可以Trans.Rollback().呵呵.
gpz_dalian 2008-01-16
  • 打赏
  • 举报
回复
忘了说明了,要用两个数据库
cloudgamer 2008-01-16
  • 打赏
  • 举报
回复
把两个command写在同一个储存过程中
loveme1204 2008-01-16
  • 打赏
  • 举报
回复
Dim instance As MySqlTransaction = myConn.BeginTransaction
command2.Transaction = instance
command.CommandText = "UPDATE ACCOUNTS_A SET AMOUNT = AMOUNT - " & TranAmount & " WHERE NAME ='He'"
command.ExecuteNonQuery()

command2.CommandText = "UPDATE ACCOUNTS_B SET AMOUNT =" & TranAmount & " + AMOUNT WHERE NAME ='Me'"
command2.ExecuteNonQuery()
instance.Commit()
北京的雾霾天 2008-01-16
  • 打赏
  • 举报
回复
通过SqlCommand.Transaction 属性来设置不同的SqlCommand使用同一个事务对象就可以了。
a523194491 2008-01-16
  • 打赏
  • 举报
回复
conn.Open();
transaction= conn.BeginTransaction();
command.Transaction = transaction;
command2.Transaction = transaction;
command.ExecuteNonQuery()
command2.ExecuteNonQuery()
transaction.Commit()

16,554

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧