事务为何不起作用

billlyh 2010-05-23 11:28:48

事务函数如下:
Public Function ExecuteTransaction(ByVal sqlString As String)

con_odbc.Open()
Dim tran As OdbcTransaction = con_odbc.BeginTransaction()
Dim comm As New OdbcCommand()
comm.Connection = con_odbc
comm.Transaction = tran
Try
comm.CommandText = sqlString
comm.ExecuteNonQuery()
tran.Commit()
Catch ex As Exception
tran.Rollback()
Finally
con_odbc.Close()

End Try
End Function

为了插入表UD34 UD33插入值,分别调用
lyh_odbc1.ExecuteTransaction(sql_insert)
lyh_odbc1.ExecuteTransaction(insert_DataGridView1)

完整语句如下:

sql_insert = "insert into PUB.UD34(Key1,Number01,Character05,Character06,Character07) values('" + sGUID.ToString() + "','" + int_Number01.ToString() + "'," +

_
"'" + dr.Cells(8).Value.ToString() + "','" + dr.Cells(9).Value.ToString() + "','" + dr.Cells(5).Value.ToString() + "')"
lyh_odbc1.ExecuteTransaction(sql_insert)

insert_DataGridView1 = "insert into PUB.UD33(Key1,Number01,Character05,Character06,Character07,Character08,Character09,Character10," + _
"ShortChar11,ShortChar12,ShortChar13,ShortChar14,Date01,Character01,Character02,Character03,Character04" + _
") values('" + sGUID2.ToString() + "','" + int_Number01.ToString() + "','" + OrderNum + "'," + _
"'" + PONum + "','" + LineDesc + "','" + PartNum + "'," + _
"'" + SellingQuantity + "','" + dr.Cells(10).Value.ToString() + "','" + OnHandQty + "'," + _
"'" + DocUnitPrice + "','" + CurrencyCode + "','" + NetWeight + "','" + NowTime + "'," + _
"'" + dr.Cells(1).Value + "','" + Character02 + "','" + Character03 + "','" + dr.Cells(4).Value + "')"
lyh_odbc1.ExecuteTransaction(insert_DataGridView1)

结果,能插入UD34,而UD33插不了,
为什么会这样,使用了事务应该是两个要么同时能插入,要么都不能
...全文
71 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
两个?

在你的每一个Transaction中,都有一个自己的Transaction,因此这两个根本没有关系,不在一个Transaction之中。

好好看看入门范例,两个语句放入同一个Transaction该如何写!
xray2005 2010-05-23
  • 打赏
  • 举报
回复
ExecuteTransaction方法里面是一个事务,你调用了2次,是分别2个事务。当然不起作用了。

Forrest23 2010-05-23
  • 打赏
  • 举报
回复
你这样写 是开启了两个独立的事务 所以会一个成功 一个不成功

你应该写一个 事务开启函数 事务关闭函数 执行sql语句函数

执行sql语句函数 中有异常的话 回滚

步骤应该是这样

1。开启事务
2。执行sql语句
3.执行sql语句
。。中间是执行sql语句 可以很多句
4。关闭sql语句
wuyq11 2010-05-23
  • 打赏
  • 举报
回复
那是独立的
using(TransactionScope scope = new TransactionScope())
{
//方法1
//方法2:
scope.Complete();
}
billlyh 2010-05-23
  • 打赏
  • 举报
回复
时间紧,没空慢慢看入门,楼上式者哪位大侠看看应该怎么修改啊,

16,554

社区成员

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

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