0

ASP.NETとc#を使用してSQLトランザクションを実行する方法(すべてのデータがコミットされていない場合は複数のテーブルにデータを挿入してからロールバックする)?最も簡単な方法と最も近い方法をsqlCommandお願いします!

前もって感謝します、

4

3 に答える 3

1

このコードを使用してみてください:

using (SqlConnection con = new SqlConnection("your ConnectionString"))
            {
                SqlCommand cmd = new SqlCommand("insert into Category values(@name);insert into Packages(name,CatId) values(@pname,@catId)", con);
                cmd.Parameters.AddWithValue("@name", "12");
                cmd.Parameters.AddWithValue("@pname", "12");
                cmd.Parameters.AddWithValue("@catId", "1");
                con.Open();
                cmd.ExecuteNonQuery();
                con.Close();
            }
于 2012-10-06T12:27:25.957 に答える
0

簡単な方法Stored Procedureでデータベース内のすべてのデータを一度に更新する場合は、を使用します。ストアドプロシージャ自体でエラーを処理し、そこでトランザクション自体をロールバックできます。
ただし、C#からSQL Serverに対して複数のクエリを実行し、それらすべてを1つのトランザクションに保持したい場合はTransactionScope Class、.NETが提供するクエリを使用できます。
これがそのためのMSDNリンクです。
それが役に立てば幸い。

于 2012-10-06T12:38:44.440 に答える
0

@Luftwaffeの回答に追加:

using(TransactionScope tscope = new TransactionScope())
{
    using(SqlConnection conn = new SqlConnection(myconnstring)
    {
        conn.Open();

        ... Call the necessary stored proc here

        tscope.Complete();
        conn.Close();
    }
}
于 2012-10-06T15:06:03.850 に答える