事务是否可以跨越vb.net中的多个语句

时间:2013-09-06 18:23:57

标签: sql vb.net sql-server-2008-r2

这可能在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数据已经插入。所以我查找了事务,理论上它可以解决这个问题,因为如果出现故障,你可以回滚插件。

1 个答案:

答案 0 :(得分:2)

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