如何在Dataset 中进行事务处理

zgan 2002-03-30 04:56:10
当有2个表时
da1.update(ds,"table1")
da2.update(ds,"table2")

.....以上一进行事务处理,如何作

以下的方法行不通

Try
Trans.Begin()
da1.Update(ds, "aaa")
da2.Update(ds, "bbb")

Trans.Commit()
Response.Write("ok ")
Catch e1 As Exception

Trans.Rollback()

Response.Write("error!!!")
Finally

cnn.Close()
cnn = Nothing
End Try
...全文
96 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
icyer 2002-04-02
  • 打赏
  • 举报
回复
这样试试。
在try{...}之前,"Dim Trans As"之后再加上以下代码:

da1.InsertCommand.Transaction = Trans
da1.UpdateCommand.Transaction = Trans
da2.InsertCommand.Transaction = Trans
da2.UpdateCommand.Transaction = Trans
zgan 2002-04-02
  • 打赏
  • 举报
回复
-_-
zgan 2002-04-01
  • 打赏
  • 举报
回复
dreammaster(天涯) 你好。我使用了你的方法,当还是不能 Rollback
代码如下:请大家帮忙看看

Dim cnstr As String = "Persist Security Info=False;User ID=test;pwd=;Initial Catalog=test;Data Source=server"
Dim cnn As New SqlConnection(cnstr)
cnn.Open()
Dim da1 As New SqlDataAdapter("select * from aaa", cnstr)
Dim da2 As New SqlDataAdapter("select * from bbb", cnstr)
Dim ds As New DataSet()
Dim cb1 As New SqlCommandBuilder(da1)
Dim cb2 As New SqlCommandBuilder(da2)
'da1.FillSchema(ds, SchemaType.Source, "aaa")
da1.Fill(ds, "aaa")
'da2.FillSchema(ds, SchemaType.Source, "bbb")
da2.Fill(ds, "bbb")
Dim rows As DataRow
rows = ds.Tables("aaa").NewRow
rows("a1") = "aa1"
rows("a2") = "aa2"
ds.Tables("aaa").Rows.Add(rows)
rows = ds.Tables("bbb").NewRow
rows("b1") = "bb1"
rows("b2") = "bb2"
ds.Tables("bbb").Rows.Add(rows)
Dim Trans As SqlTransaction = cnn.BeginTransaction(IsolationLevel.ReadCommitted, "TransName")
Try

da1.Update(ds, "aaa")
da2.Update(ds, "bbb")

Trans.Commit()
Response.Write("ok ")
Catch e1 As Exception
Trans.Rollback("TransName")

Response.Write("error!!!")
Finally

cnn.Close()
cnn = Nothing
End Try
icyer 2002-04-01
  • 打赏
  • 举报
回复
DataAdapter内部是进行事务处理了的,而且会返回影响的记录数,你可以根据这个返回值来判断是否更新成功:

if da1.Update(ds,"aaa")>0 then
da2.Update(ds,"bbb")
end if
dreammaster 2002-03-30
  • 打赏
  • 举报
回复
SqlTransaction是基于Connection身上的,要这样子定义

SqlTransaction trans = conn.BeginTransaction(IsolationLevel.readcommit, "transname");

1,979

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 其他语言讨论
社区管理员
  • 其他语言社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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