在寫資料庫程式時,一個transaction執行很多個update、insert、delete是常有的事,
很奇怪的是,目前的ASP.NET或C#的書,卻多半沒有講解怎麼做,
這裡舉個簡單的例子供大家參考。假設目前有兩個table -- users和friends分別如下,
範例程式會同時insert一筆資料到兩個table,如果成功了就commit,失敗了就roll back。
| table users |
| 欄位 | 型別 |
| userid | varchar(10) |
| pwd | varchar(20) |
| table friends |
| 欄位 | 型別 |
| userid | varchar(10) |
| friendid | varchar(10) |
範例程式:
string connect_string = "server=win2003;uid=sa;pwd=PASSWORD;database=MyDB";
SqlConnection conn = new SqlConnection(connect_string);
conn.Open();
SqlTransaction transaction = conn.BeginTransaction();
try
{
SqlCommand users = new SqlCommand("insert into Users(userid, pwd)
values('" + userid + "', '" + pwd + "')", conn);
users.Transaction = transaction;
users.ExecuteNonQuery();
SqlCommand friends = new SqlCommand("insert into friends(userid, friendid)
values('" + userid + "', '" + friend1 + "')", conn);
friends.Transaction = transaction;
friends.ExecuteNonQuery();
transaction.Commit();
}
catch
{
transaction.Rollback();
}
finally
{
conn.Close();
}