Я новичок в ADO, поэтому я хочу спросить, правильно ли я использовал транзакцию. Вот фрагмент кодаИспользование транзакции в ADO.net SQL
string SQL1 = "INSERT INTO tbl_cust(cust_id,cust_name) values ('000001','YoungMcD') ";
string SQL2 = "UPDATE tbl_cust SET custname='OldMcDonald' WHERE cust_id='000001'";
string SQL3 = "SELECT * FROM tbl_supplier WHERE supplier_code ='000001'";
// write connstring
string conn = System.Configuration.ConfigurationManager.ConnectionStrings["connstr"].ConnectionString;
// end of connection string
// setting connection
SqlConnection db = new SqlConnection(conn);
SqlTransaction transaction1;
db.Open();
transaction1 = db.BeginTransaction();
try
{
// insert to table
SqlCommand Com1 = new SqlCommand(SQL1, db, transaction1);
Com1.ExecuteNonQuery();
SqlCommand Com2 = new SqlCommand(SQL2, db, transaction1);
Com2.ExecuteNonQuery();
SqlCommand Com3 = new SqlCommand(SQL3, db, transaction1);
Com3.ExecuteNonQuery();
transaction1.Commit();
db.Close();
}
catch
{
transaction1.Rollback();
db.Close();
msg = "error";
goto endret;
}
Для сделки, я должен использовать
SqlCommand Com1 = new SqlCommand(SQL1, db, transaction1);
вместо
SqlCommand Com1 = new SqlCommand(SQL1, db);
, потому что я уже констатировать начать транзакцию перед try{}
заявления
EDIT:
Я понимаю, первый синтаксис применим, но как эффективно использовать ADO ?. Я считаю, что этот путь слишком прост.
я обнаружил, что продолжать это делать для вставки параметра, пример:
string SQL1 = "INSERT INTO tbl_cust(cust_id,cust_name) values ('" + param1 +"','"+ param2 +"') ";
Вам необходимо использовать первую, чтобы указать sql, с какой транзакцией принадлежит команда, так как вы могли одновременно выполнять несколько транзакций. – garethb
Обратите внимание, что пока это будет работать, вы фактически совершаете 5 раундов между вашим приложением и сервером sql. Те же действия могут быть выполнены только с одной поездкой в оба конца с использованием хранимой процедуры. –
Могу ли я попросить объяснение того, что вы имеете в виду в совершении 5-ти круговых поездок? потому что я этого не понимаю, и почему это хуже, чем создание хранимой процедуры. – KokoriNut