vb.net 事务处理问题(Adapter.Update()和Sql语句组成的事务)

rmini 2017-04-02 05:55:33
Dim MyTransConn As SqlConnection = New SqlConnection("Data Source=(local);Initial Catalog=MyDoors;Integrated Security=true;User ID=sa;Password=''")
MyTransConn.Open() '事务管理,在vb.net中使用事务
Dim myTrans As SqlTransaction = MyTransConn.BeginTransaction()
'Dim command As SqlCommand = MyTransConn.CreateCommand()
Dim myCommand As SqlCommand = New SqlCommand()
myCommand.Connection = MyTransConn
myCommand.Transaction = myTrans

myCommand.CommandText = "insert into Order_Header (OrderID,TradeMark,ShiMlx,Customers,SaleMgr,TerminalNm,TerminalTel,TerminalAdd," _
& "OrderTime,DeliveryTime,Remarks,ZhiDr,ZhiDrq,OrderCritical,OrderType) values('" & Me.TextBox1.Text & "','" & Me.ComboBox1.Text & "','" & Me.ComboBox2.Text & "','" & Me.GridLookUpEdit1.Text & "','" & Me.ComboBox3.Text & "','" & Me.TextBox2.Text & "'," _
& "'" & Me.TextBox3.Text & "','" & Me.TextBox4.Text & "','" & Me.DateTimePicker1.Value & "','" & Me.DateTimePicker2.Value & "','" & Me.TextBox5.Text & "','" & UserName & "','" & Format(mydt, "yyyy-MM-dd HH:mm:ss") & "','" & Me.ComboBox4.Text & "','" & Me.ComboBox5.Text & "')"
myCommand.ExecuteNonQuery()


Dim usersqlstr1 = "SELECT max(ID) FROM Order_Header" ' where SaleMk Like '%" & Trim(Me.ComboBox1.ValueMember) & "%'
ObjDataAdpter = New SqlDataAdapter(usersqlstr1, ObjSqlConnection)
Dim objtable1 As New DataTable()
ObjDataAdpter.Fill(objtable1)
Dim i As Integer
Dim ordtmp As Integer = objtable1.Rows(0).Item(0)
If objtable1.Rows.Count > 0 Then
For i = 0 To Me.GridView1.RowCount - 1
Me.GridView1.SetRowCellValue(i, Me.GridView1.Columns("OrderID"), objtable1.Rows(0).Item(0).ToString)
Next
Else
For i = 0 To Me.GridView1.RowCount - 1
Me.GridView1.SetRowCellValue(i, Me.GridView1.Columns("OrderID"), "1")
Next
End If
sqldataadapter1.Update(table)

myTrans.Commit()
MsgBox("数据保存成功!", 64, "提示")
MyTransConn.Close()
Catch
MsgBox("错误号:" & Err.Number & "错误描述:" & Err.Description)
myTrans.Rollback()
End Try




以上事务有什么问题吗?sqldataadapter1.Update(table)执行时发生了错误,失败了,但是第一条insert into语句依然成功执行,这个事务该怎么修改?(我想要的结果是任何一个失败,另一个都不执行)
...全文
381 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
Tiger_Zhao 2017-04-05
  • 打赏
  • 举报
回复
rmini 2017-04-03
  • 打赏
  • 举报
回复
引用 1 楼 xdashewan 的回复:
失败了会回滚,你现状到底是如何请说明清楚
本想两个操作同时成功才能提交事务,但是现在就是第二个操作失败了,但是第一个操作依然成功提交了
rmini 2017-04-03
  • 打赏
  • 举报
回复
引用 2 楼 Tiger_Zhao 的回复:
myCommand 的上下文是 MyTransConn+myTrans ObjDataAdpter 的上下文 ObjSqlConnection 两个连接(当然不可能是同一个事务)互不影响啊。 必须是同一个连接、同一个事务才行。
我把ObjDataAdpter 的连接改成了MyTransConn是不是就是同一个事务?但是还是不行,该怎么修改呢?
xdashewan 2017-04-03
  • 打赏
  • 举报
回复
失败了会回滚,你现状到底是如何请说明清楚
Tiger_Zhao 2017-04-03
  • 打赏
  • 举报
回复
myCommand 的上下文是 MyTransConn+myTrans
ObjDataAdpter 的上下文 ObjSqlConnection
两个连接(当然不可能是同一个事务)互不影响啊。
必须是同一个连接、同一个事务才行。

16,721

社区成员

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

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