A Look into Transactions in ADO.NET 2.0
page 4 of 5
by Mohammad Azam
Feedback
Average Rating: This article has not yet been rated.
Views (Total / Last 10 Days): 23964/ 30

Save Points in Transactions

Whenever you rollback a transaction, it rolls back all the operations that you have performed before. Sometimes you need to undo the transaction to a certain point. For this scenario, you can use the Save Points functionality. Save Points allows you to rollback a transaction to a certain point. Let’s take a look at code below, which uses a Save Point.

Listing 6 – Using Save Points in Transaction

public static void AddUserSavePointTransaction()
{
  SqlConnection myConnection = newSqlConnection(ConnectionString);
  SqlCommand myCommand = new SqlCommand();
  myCommand.CommandText = @
    "INSERT INTOUsers(FirstName,LastName)VALUES('John', 'Doe')
    ";myCommand.Connection = myConnection;
 
  SqlTransaction myTransaction = null;
 
  try
  {
    myConnection.Open();
    myTransaction =myConnection.BeginTransaction();
    myCommand.Transaction = myTransaction;
 
    myCommand.ExecuteNonQuery();
 
    myTransaction.Save("firstInsertUser");
 
    myCommand.CommandText = @
      "INSERT INTOUsers(FirstName,LastName)VALUES('Azam', 'Sharp')";
 
    myCommand.ExecuteNonQuery();
   myTransaction.Rollback("firstInsertUser");
  }
  catch (Exception ex)
  {
    string exception = ex.Message;
    myTransaction.Rollback();
  }
 
  finally
  {
    myTransaction.Commit();
    myConnection.Close();
 
  }
}

Analysis

As you can see in the code above, I am using the command object to insert a new user. After executing the command object for the first time, I create a save point and insert another user. Immediately after inserting the second user, I rollback the transaction to the save point. Since the save point is declared after first user is inserted, only the insertion of first user will succeed, and the insertion of the second user will be discarded.

[Download Sample]


View Entire Article

User Comments

Title: feedback   
Name: programacion web
Date: 2010-11-22 11:07:36 AM
Comment:
excellent article, thanks
Title: feedback   
Name: suleman
Date: 2010-06-11 2:20:56 AM
Comment:
myTransaction.Commit();
is in finally block in listing 1 , that is wrong , it there is exception then transaction already rollback , and myTransaction.Commit() will also execute in finally block.

Can you Please verify.
Title: Where are the SP of this article   
Name: Rameez
Date: 2009-05-25 3:49:45 AM
Comment:
Hi,
Excellet work keep it up but where are the stored Procedure of this article let me know plz
Best Regards
Title: Very Nice Article   
Name: Krunal.Shaholia
Date: 2008-09-04 4:24:31 AM
Comment:
A very nice article .would like to see more interesting articles of this kind.
Title: easy understandable to any person   
Name: pralay mitra
Date: 2008-05-23 12:35:26 PM
Comment:
it' good. keep going
Title: keep it up   
Name: peddakapu
Date: 2007-12-04 3:02:24 AM
Comment:
Hi
Mohammad Azam......How r u? The way u r done is very nice.

keep it up ..young man..takecare...
Title: good explain   
Name: naidu
Date: 2007-12-04 2:59:24 AM
Comment:
Thanks...a lot....
Title: nice coding work   
Name: vijay
Date: 2007-12-03 5:13:36 AM
Comment:
the codeing work done by mr azam is very nice
Title: Very Nice   
Name: Irina
Date: 2007-10-30 12:52:12 PM
Comment:
Very clear and simple idea to demonstrate transaction in use. Can be easily modified to see results for other isolation level settings. Nice!
Title: Excellent   
Name: abc
Date: 2007-10-01 8:23:32 AM
Comment:
Excellent way of understanding the Transaction.
Title: Nice (Y)   
Name: Faraz Siddiqui
Date: 2007-09-26 1:38:55 PM
Comment:
Very easy way to understand the Transaction.
Title: SQL Transaction   
Name: Nitin Sharma(.Net Developer)
Date: 2007-07-02 6:33:23 AM
Comment:
The article is very very easy to understand...Keep it up..always...!!
Title: very good   
Name: Lalji Mer
Date: 2007-05-01 3:26:24 AM
Comment:
It is very nice to understand transaction process too.
Title: Very Good   
Name: Sivanthinathan
Date: 2007-03-16 4:42:52 AM
Comment:
It is very nice to understand transaction process.
Title: Very very good   
Name: Paul Gonzales
Date: 2007-01-19 1:01:02 PM
Comment:
My english isn't so good, but i understand all.. this article is excelent.
I'd like get more similar articles.
thanks
Lima-Peru
Title: good   
Name: nitin
Date: 2006-12-07 2:51:01 PM
Comment:
good work. keep it up
Title: GOOD Article   
Name: Rajesh Varma
Date: 2006-11-24 8:59:05 AM
Comment:
ITs Very good Articles...and well presented....
Title: gr8 job   
Name: Rajeev Kumar Shukla
Date: 2006-08-18 8:59:34 AM
Comment:
problem with finally block otherwise article is very good specialy regarding SavePoint in transaction.
Title: Knowledge shareable Article   
Name: Mahendra singh
Date: 2006-07-20 7:43:41 AM
Comment:
wow
that's great Article.
specially the way of explanation is Interesting
Title: Software Engineer   
Name: Premanshu Mukherji
Date: 2006-07-20 7:33:18 AM
Comment:
Very nice article. Dirty Read was well explained. Examples are self explanatory. Good Job.
Title: Best one   
Name: Sudhakar rao
Date: 2006-07-04 1:41:21 AM
Comment:
This article is best one ,i didnt c this type of article .
Thanks keep it up my friends
Title: Problem with IsolationLevel   
Name: Ctut
Date: 2006-04-28 5:42:54 PM
Comment:
The one that you demonstrated in the example above is not known as ReadOnCommited, it's known as a ReadCommitted.
Title: Problem with commit   
Name: Simon Stewart
Date: 2006-04-05 2:58:05 AM
Comment:
Please check your finally block.

You should rather call commit directly after you have done the DB operation.
In your case if an error occurs, your finally block will fail because the transaction is not in a usable state at that point.
Title: Programer Analyst   
Name: Srinivas
Date: 2006-03-23 6:51:56 AM
Comment:
Nice One for novice users
Title: Very Nice Work   
Name: Rupesh kumar Sinha
Date: 2006-03-22 12:52:12 AM
Comment:
Its a great work for them who wants to be updated in latest technology!! Keep it Up
Title: Thanks   
Name: Mohammad Azam
Date: 2006-03-21 7:59:41 PM
Comment:
Thank you very much everyone for your kind comments.
Title: Nicely Done!   
Name: strahman
Date: 2006-03-21 12:10:14 PM
Comment:
Very well written!! Excellent job, Azam!!
Title: Very Good   
Name: sree
Date: 2006-03-21 4:47:41 AM
Comment:
This Artcile is so Informative and Nice.






Community Advice: ASP | SQL | XML | Regular Expressions | Windows


©Copyright 1998-2024 ASPAlliance.com  |  Page Processed at 2024-04-18 11:37:38 PM  AspAlliance Recent Articles RSS Feed
About ASPAlliance | Newsgroups | Advertise | Authors | Email Lists | Feedback | Link To Us | Privacy | Search