PDA

View Full Version : اجرای transaction



saeeedft
چهارشنبه 20 آبان 1388, 08:24 صبح
با سلام، دوستان من یک transaction نوشتم که دو تا ثبت رو انجام میده، حاا من توی rolback اون اشکال دارم، این rolback رو کجا باید بنویسم، کد من به شکل زیر هستش :

SqlConnection con = new SqlConnection();
con.ConnectionString = "data source=(local);initial catalog=test1;integrated security=true";
SqlTransaction tran1;
SqlTransaction tran2;
SqlCommand cmd = new SqlCommand("ins1", con);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@name", textBox1.Text);
con.Open();
tran1 = con.BeginTransaction();
cmd.Transaction = tran1;
cmd.ExecuteNonQuery();
tran1.Commit();
cmd = new SqlCommand("ins2", con);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@famil", textBox2.Text);
cmd.Parameters.AddWithValue("@tarikh", c.getMiladiDate(new IrDate(maskedTextBox1.Text)));

tran2 = con.BeginTransaction();
cmd.Transaction = tran2;
tran2.Commit();
cmd.ExecuteNonQuery();
con.Close();
MessageBox.Show("sabt shod");

کیوان رحیمی
پنج شنبه 21 آبان 1388, 16:53 عصر
دستورات را به صورت اصلاح کن شما باید یک tran داشته باشی که در صورت commit شدن ان هر در دستور شما انجام شود به صورت زیر:



try
{
SqlConnection con = new SqlConnection();
con.ConnectionString = "data source=(local);initial catalog=test1;integrated security=true";
SqlTransaction tran1;

SqlCommand cmd = new SqlCommand("ins1", con);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@name", textBox1.Text);
con.Open();
tran1 = con.BeginTransaction();
cmd.Transaction = tran1;
cmd.ExecuteNonQuery();

cmd = new SqlCommand("ins2", con);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@famil", textBox2.Text);
cmd.Parameters.AddWithValue("@tarikh", c.getMiladiDate(new IrDate(maskedTextBox1.Text)));

cmd.Transaction = tran1;


cmd.ExecuteNonQuery();
tran1.Commit();

con.Close();
MessageBox.Show("sabt shod");
}
catch()
{
tran1.rollback();
}

saeeedft
پنج شنبه 21 آبان 1388, 22:50 عصر
ممنون جوابمو گرفتم، دوستان یه سری هم به اینجا بزنند
http://alfa-web.net (http://alfa-web.net/)

AliRezaPro
جمعه 22 آبان 1388, 10:15 صبح
transaction کارش چیه دوستان؟ و کجاها استفاده میشه؟

اَرژنگ
جمعه 22 آبان 1388, 10:34 صبح
transaction کارش چیه دوستان؟ و کجاها استفاده میشه؟


بعضی کارها یا باید کاملاً انجام بشند و یا نشند، اگر قسمتی انجام بشه و مشکلی پیش بیاد و قسمت دیگر انجام نشه ایراد ایجاد میکنه. مثال:زمانی که از یک حساب در بانک پول به حساب دیگر بره. اگر اول از حساب اول کم کنیم و قبل از اینکه به حساب دوم اضافه بشه مشکلی پیش بیاد اشکال دارد. اگر اول به حساب دوم اضافه کنیم و قبل از اینکه از حساب اول کم کنیم مشکلی پیش بیاد بانک پول از دست میده. پس باید کم کردن مقدار و اضافه کردن به حساب دیگر در یک عمل یا انجام بشد و یا انجام نشه. برایه همین اگر هر دو عمل را در یک انجام داده اونوقت یا همه چی موفق انجام میشه و یا همه چی انجام نمیشه .