1

这在 vb.net 中是否可行

sub Main()
    conn.open
    transactions = conn.begintransaction("SAMPLE")
    insertintotable1()
    insertintotable2()
    insertintotable3()
    transactions.commit
end sub
sub insertintotable1
    try
    conn = new sql connection(connectionstring)
    strsql = sql statement
    cmd = new sql command(strsql, conn)
    cmd.executenonquery
    catch ex as exception
         transaction.rollback
    end try
 end sub
sub insertintotable2
    try
    conn = new sql connection(connectionstring)
    strsql = sql statement
    cmd = new sql command(strsql, conn)
    cmd.executenonquery
    catch ex as exception
         transaction.rollback
    end try
 end sub
sub insertintotable3
    try
    conn = new sql connection(connectionstring)
    strsql = sql statement
    cmd = new sql command(strsql, conn)
    cmd.executenonquery
    catch ex as exception
         transaction.rollback
    end try
 end sub

我的问题是,如果我在第二个表中的查询有问题,那么如果没有事务,则表 1 的数据已经被插入。所以我查找了事务,理论上它会解决这个问题,因为如果出现故障,你可以回滚插入。

4

1 回答 1

2

如果你想这样做,你需要实例化一个 Sql 连接,然后将它传递给将对其进行工作的方法。目前,您正在每种方法中实例化一个新连接,因此每个方法都有自己的事务。

于 2013-09-06T18:38:57.510 回答