PDA

View Full Version : rollback کردن تراکنش



Developer Programmer
دوشنبه 09 دی 1387, 20:39 عصر
چرا پیغام


Use of unassigned local variable 'mySqlTransaction'
رو میده؟

SqlTransaction mySqlTransaction;
try
{

mySqlConnction.Open();
mySqlTransaction = mySqlConnction.BeginTransaction();
mySqlCommand.Transaction = mySqlTransaction;
mySqlDataReader = mySqlCommand.ExecuteReader();
mySqlTransaction.Commit();
while (mySqlDataReader.Read())
{
Console.WriteLine("{0}", mySqlDataReader["CompanyName"]);
}
}
catch (SqlException se)
{
mySqlTransaction.Rollback();
MessageBox.Show(se.Message.ToString(), se.Number.ToString());
}

Behrouz_Rad
دوشنبه 09 دی 1387, 22:50 عصر
اول مقدار فعال کننده ی mySqlTransaction رو برابر با null قرار بده.

دوم، Rollback رو که در Catch گذاشتی، مجدداً در یک Try Catch دیگه قرار بده. یعنی Try Catch در Catch باشه. در قسمت Try، دستور Rollback رو بنویس.
البته پیشنهاد من اینه که از تراکنش در سطح دیتابیس استفاده کنی نه در خود برنامه.

موفق باشید.

Developer Programmer
دوشنبه 09 دی 1387, 23:58 عصر
اول مقدار فعال کننده ی mySqlTransaction رو برابر با null قرار بده.
متوجه نمیشم!

Behrouz_Rad
سه شنبه 10 دی 1387, 08:35 صبح
SqlTransaction mySqlTransaction = null;

Amir Oveisi
سه شنبه 10 دی 1387, 11:12 صبح
اگر از Linq استفاده کنید خودش rollback رو انجام میده.

موفق باشید
jooje

vcldeveloper
سه شنبه 10 دی 1387, 14:48 عصر
متوجه نمیشم!
یعنی خودش بطور خودکار متغیرها را مقداردهی اولیه نمیکنه، باید خودت این کار را انجام بدی. تا زمانی هم که مقداردهی اولیه نکنی، نمیتونی به متغیر دسترسی داشته باشی.

shervin_agh67
سه شنبه 10 دی 1387, 23:00 عصر
اول مقدار فعال کننده ی mySqlTransaction رو برابر با null قرار بده.

دوم، Rollback رو که در Catch گذاشتی، مجدداً در یک Try Catch دیگه قرار بده. یعنی Try Catch در Catch باشه. در قسمت Try، دستور Rollback رو بنویس.
البته پیشنهاد من اینه که از تراکنش در سطح دیتابیس استفاده کنی نه در خود برنامه.

موفق باشید.

آره منم از این تابع استفاده کردم و خطا داد . آخه زمانی ما از این تابع استفاده می کنیم که ثبت اطلاعات در بانک به طور نصفه انجام شده و می خوایم به اول برگرده ولی خطا میده . حالا اگه از یک Try و Catch در داخل catch استفاده کنیم سودی نداره چون دوباره به قسمت catch میره . بهترین راهش همون استفاده از Linq هست .

Developer Programmer
سه شنبه 10 دی 1387, 23:17 عصر
آخه من این تکه کد رو از سایت مایکروسافت بر داشته بودم.تعجب میکنم که خطا میده.
تازه به DataAdapter هم گیر میده که DataAdapter باز مونده پس نمی تونی commit کنی

baran_bataravat
یک شنبه 29 دی 1387, 18:20 عصر
چرا پیغام
رو میده؟

SqlTransaction mySqlTransaction;
try
{

mySqlConnction.Open();
mySqlTransaction = mySqlConnction.BeginTransaction();
mySqlCommand.Transaction = mySqlTransaction;
mySqlDataReader = mySqlCommand.ExecuteReader();
mySqlTransaction.Commit();
while (mySqlDataReader.Read())
{
Console.WriteLine("{0}", mySqlDataReader["CompanyName"]);
}
}
catch (SqlException se)
{
mySqlTransaction.Rollback();
MessageBox.Show(se.Message.ToString(), se.Number.ToString());
}

مي شه بگين اين كد قرار چكار كنه؟