ASP.NETとc#を使用してSQLトランザクションを実行する方法(すべてのデータがコミットされていない場合は複数のテーブルにデータを挿入してからロールバックする)?最も簡単な方法と最も近い方法をsqlCommand
お願いします!
前もって感謝します、
ASP.NETとc#を使用してSQLトランザクションを実行する方法(すべてのデータがコミットされていない場合は複数のテーブルにデータを挿入してからロールバックする)?最も簡単な方法と最も近い方法をsqlCommand
お願いします!
前もって感謝します、
このコードを使用してみてください:
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();
}
簡単な方法Stored Procedure
でデータベース内のすべてのデータを一度に更新する場合は、を使用します。ストアドプロシージャ自体でエラーを処理し、そこでトランザクション自体をロールバックできます。
ただし、C#からSQL Serverに対して複数のクエリを実行し、それらすべてを1つのトランザクションに保持したい場合はTransactionScope Class
、.NETが提供するクエリを使用できます。
これがそのためのMSDNリンクです。
それが役に立てば幸い。
@Luftwaffeの回答に追加:
using(TransactionScope tscope = new TransactionScope())
{
using(SqlConnection conn = new SqlConnection(myconnstring)
{
conn.Open();
... Call the necessary stored proc here
tscope.Complete();
conn.Close();
}
}