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

私の問題は、2 番目のテーブルのクエリに問題がある場合、トランザクションがないと、テーブル 1 のデータが既に挿入されていることです。SO私はトランザクションを調べましたが、何かが失敗した場合に挿入をロールバックできるため、理論的にはその問題を解決できます。

4

1 に答える 1

2

これを行うには、1 つの Sql 接続をインスタンス化し、それを処理するメソッドに渡す必要があります。現時点では、各メソッドで新しい接続をインスタンス化しているため、それぞれに独自のトランザクションがあります。

于 2013-09-06T18:38:57.510 に答える