سوال: مفهوم Rollback در تراکنش

ساخت وبلاگ

عرض سلام و وقت به خیر خدمت دوستان و اساتید محترم
عزیزان لطف کنید یه نگاه به این کد بندازید و به سوالاتم پاسخ بدید لطفا

using(SqlConnection Con = new SqlConnection(ConString))
{
SqlCommand Cmd = new SqlCommand();
Cmd.Connection = Con;
Cmd.CommandText = cmdCommand;
Cmd.CommandType = cmdType;
SqlTransaction Trans;
Con.Open();
Trans = Con.BeginTransaction();
Cmd.Transaction = Trans;
try
{
Cmd.ExecuteNonQuery();
Trans.Commit();
}
catch
{
Trans.Rollback();
}
}

آیا کلاس Transaction رو درست پیاده سازی کردم ؟
کوئری ای که در این قطعه کد اجرا میشه از سه INSERT تشکیل شده که INSERT سوم نام جدول رو اشتباه میده و در نتیجه استثنا تولید میشه و هیچ کدام از کوئری ها رو دیتابیس تاثیری نمیذارن، تا اینجاش کاملا درسته
اما مشکل من اینه، حتی زمانی که Rollback رو نمیذارم هم برنامه درست اجرا میشه و جلوی تاثیرگذاری دو INSERT اول روی دیتابیس گرفته میشه
پس کار RollBack چیه ؟ فایده ی نوشتنش توو این کد چیه که حتی اگه نباشه هم کلاس Transaction کارش رو درست انجام میده ؟
چیزی که من فهمیدم اینه که همه چی به دستور Trans.Commit بستگی داره و حتی اگه یک کوئری درست اجرا نشه، Trans.Commit با اجرا نشدنش جلوی تاثیر روی دیتابیس به صورت ناقص رو می گیره، پس Rollback چه کاری می کنه دقیقا ؟
خیلی ممنون

- - , .

برنامه نویس...
ما را در سایت برنامه نویس دنبال می کنید

برچسب : نویسنده : محمد رضا جوادیان programers بازدید : 78 تاريخ : سه شنبه 4 اسفند 1394 ساعت: 18:11