私は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;
}
に、私はすでにtry{}
文の前
EDITトランザクションを開始述べるので、私は
SqlCommand Com1 = new SqlCommand(SQL1, db, transaction1);
代わりの
SqlCommand Com1 = new SqlCommand(SQL1, db);
を使用する必要があります。
を私はそれを得る、最初の構文は適用できますが、効果的にADOを使用する方法?私はこの方法があまりにも簡単だとわかります。
私は自分自身の元、パラメータを挿入するためにこれをやり続けるが見つかりました:
string SQL1 = "INSERT INTO tbl_cust(cust_id,cust_name) values ('" + param1 +"','"+ param2 +"') ";
複数のトランザクションを同時に処理できるので、コマンドにどのトランザクションが属しているかをsqlに知らせる必要があります。 – garethb
これは動作しますが、実際にはアプリケーションとSQL Serverの間で5回の往復を行っています。同じアクションは、ストアドプロシージャを使用して1回のラウンドトリップで完了することができます。 –
私は5回の往復をすることについて何を意味するのかを説明することができますか?なぜなら、これはストアドプロシージャを作成するよりも劣るからです。 – KokoriNut