Foxtable(狐表)用户栏目专家坐堂 → 两个不同数据源的sql语句,如何写到同一个事务中,代码怎么改啊?


  共有2277人关注过本帖树形打印复制链接

主题:两个不同数据源的sql语句,如何写到同一个事务中,代码怎么改啊?

帅哥哟,离线,有人找我吗?
guosheng
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:896 积分:7535 威望:0 精华:0 注册:2017/12/27 14:19:00
两个不同数据源的sql语句,如何写到同一个事务中,代码怎么改啊?  发帖心情 Post By:2020/10/30 15:42:00 [只看该作者]

下面这种写法对吗?
Dim cmd As new SQLCommand() 
Dim cmd1 As new SQLCommand() 
cmd
.ConnectionName = "Orders"  '指定数据源   
cmd1.ConnectionName = "Orders123" 
Try

    Dim id As Integer = 10258
    cmd.BeginTransaction()
'
开启事务
    cmd.CommandText = "Delete Fro m OrderDetails Where OrderID = " & id
    cmd.ExecuteNonQuery()
   
'
继续使用同一个SQLCommand执行其它SQL语句.
    cmd1.CommandText = "Delete Fro m Orders Where OrderID = " & id
    cmd1.ExecuteNonQuery()
cmd.Commit() '提交事务
    cmd1.Commit()
'
提交事务
Catch
ex As Exception '如果出错
    cmd.Rollback()
'
则回滚事务
cmd1.Rollback() '则回滚事务
   
MessageBox.Show(ex.Message, "错误",MessageBoxButtons.OK,MessageBoxIcon.Error)
End
Try
[此贴子已经被作者于2020/10/30 15:44:37编辑过]

 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106316 积分:540715 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/10/30 15:52:00 [只看该作者]

没有办法。事务仅支持同一个数据源

 回到顶部
帅哥哟,离线,有人找我吗?
guosheng
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:896 积分:7535 威望:0 精华:0 注册:2017/12/27 14:19:00
  发帖心情 Post By:2020/10/30 15:58:00 [只看该作者]

串行执行两个事务,依次,事务1 和事务2
保证事务1  和 事务2 都执行完整,有什么优化方法吗

 回到顶部
帅哥,在线噢!
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106316 积分:540715 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/10/30 16:07:00 [只看该作者]

没有,分离的事务没有办法保持完整。

 回到顶部
帅哥哟,离线,有人找我吗?
guosheng
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:896 积分:7535 威望:0 精华:0 注册:2017/12/27 14:19:00
  发帖心情 Post By:2020/10/30 22:25:00 [只看该作者]

银行转账或支付,微信支付宝支付,应该用的是多个数据库吧,它保障数据完整性用的是什么技术或原理啊?

 回到顶部
帅哥,在线噢!
有点蓝
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106316 积分:540715 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/10/31 9:56:00 [只看该作者]

一个业务一般都是使用一个数据库,然后做冗余和集群。而不是使用多个数据库。

也不是不可以做,但是涉及到的工时和成本不是一般人能够承受的。

 回到顶部