본문 바로가기
개발언어/C#.NET

Transaction C# / ASP.NET에서 이용하기

by 엔돌슨 2008. 3. 4.
반응형

SqlTransaction trans = null;
            try
            {
                upcomm = new SqlCommand(UpdateRefer, conn);
               
                upcomm.Parameters.AddWithValue("@refer", refer);
                upcomm.Parameters.AddWithValue("@step", step);

                incomm = new SqlCommand(InsertRefer, conn);
               
                incomm.Parameters.AddWithValue("@writer",txtWriter.Text.Trim());
                incomm.Parameters.AddWithValue("@title", txtTitle.Text.Trim());
                incomm.Parameters.AddWithValue("@contents",txtContents.Text.Trim());
trans = conn.BeginTransaction();

                upcomm.Transaction = trans;
                incomm.Transaction = trans;

                upcomm.ExecuteNonQuery();
                incomm.ExecuteNonQuery();  //쿼리를 실행하고

                trans.Commit();
            }
            catch (Exception ee)
            {
                trans.Rollback();
            }

방법은 여러가지가 있다.
예외처리가 아니면 롤백할 이유야 없겠다. BeginTransaction 을 이용한다.


아래는 후니사이트에 가니깐 관련 코멘트가 잇어서 가져왔다.

System.Data.SqlClient.SqlConnection <--- connection객체에 트랜잭션 관련 메서드가 있는데요????
DataAdapter를 만들때.... 커넥션 객체를 하나 생성해줘야 하잖아요.
BeginTransaction 메서드는 거기 있는건데요...........

SqlConnection con = new SqlConnection();
SqlCommand cmd = con.CreateCommand();
cmd.CommandText = "SELECT 어쩌고 저쩌고";
con.BeginTransaction();
//.........
SqlDataAdapter sq = new SqlDataAdapter(cmd, con);
con.Close();
con.Dispose();

근데 이제는 분산 트랙잭션으로 묶는것도 가능하지 싶네요.

con.EnlistDistributedTransaction();
con.EnlistTransaction();