PDA

View Full Version : مشكل كد transaction



moferferi
سه شنبه 23 تیر 1388, 13:36 عصر
سلام
من اين كد را نوشتم ولي فقط rollback ميكنه و به هيچ وجه comit نميشه
.

string Connstr = "server=192.168.0.1,1632;Initial Catalog=NORTHWND;integrated security=true;";
SqlConnection conn=new SqlConnection(Connstr);

//------------------------------------------------------------

conn.Open();
SqlTransaction sqltrans = conn.BeginTransaction();
try
{
//--create insert
SqlCommand cmdins =new SqlCommand("insert into customers(customerid,companyname) values(@newcustid,@newconame)",conn,sqltrans);
// cmdins.Transaction = sqltrans;
cmdins.Parameters.AddWithValue("@newcustid",textBox1.Text.ToString());
cmdins.Parameters.AddWithValue("@newconame", textBox2.Text.ToString());
cmdins.ExecuteNonQuery();
//--create delete
SqlCommand cmddel = new SqlCommand("delete from customers where customerid=@oldcustid",conn,sqltrans);
// cmdins.Transaction = sqltrans;
cmdins.Parameters.AddWithValue("@oldcustid", textBox3.Text.ToString());
cmddel.ExecuteNonQuery();
//commit transaction
sqltrans.Commit();
MessageBox.Show("transaction committed");
}
catch (System.Data.SqlClient.SqlException ex)
{
//rollback
sqltrans.Rollback();
MessageBox.Show("tranaction rolled back\n" + ex.Message, "rollback transactin");
}
catch (Exception ex)
{
MessageBox.Show("system error\n" + ex.Message, "error");
}
finally
{
conn.Close();
}

seven7777777
سه شنبه 23 تیر 1388, 18:40 عصر
سلام

خوب حتما یکی از دستورات داخل TRY درست انجام نمیشه که هیچ وقت کامیت نمیشه . بهترین راه اینه که اگه می تونی trace کن ببین کجا به مشکل برمی خوره و اگه نه راحت ترین کار اینه که چند تا مسیج باکس بذاری بین کدهای داخل TRY ببینی تا کجاش اجرا میشه و از کجا به بعد اجرا نمیشه .


try
{
//--create insert
SqlCommand cmdins =new SqlCommand("insert into customers(customerid,companyname) values(@newcustid,@newconame)",conn,sqltrans);
// cmdins.Transaction = sqltrans;
cmdins.Parameters.AddWithValue("@newcustid",textBox1.Text.ToString());
cmdins.Parameters.AddWithValue("@newconame", textBox2.Text.ToString());
cmdins.ExecuteNonQuery();
messageBox.show("1");
//--create delete
SqlCommand cmddel = new SqlCommand("delete from customers where customerid=@oldcustid",conn,sqltrans);
// cmdins.Transaction = sqltrans;
cmdins.Parameters.AddWithValue("@oldcustid", textBox3.Text.ToString());
cmddel.ExecuteNonQuery();
messageBox.show("2");
//commit transaction
sqltrans.Commit();
messageBox.show("3");
MessageBox.Show("transaction committed");
}


راستی چقدر Catch داری ؟!؟!؟!؟!؟!