ASP.NET Tutorial/ADO.net Database/SqlTransaction

Материал из .Net Framework эксперт
Перейти к: навигация, поиск

Local Transactions

   <source lang="csharp">

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="LocalTransactions" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head id="Head1" runat="server">

  <title>Local Transactions</title>

</head> <body>

  <form id="form1" runat="server">

Local Transactions

        This example illustrates how to use local transactions with ADO.NET.
        
     
        <asp:Label ID="labMsg" runat="server" />
                
  </form>

</body> </html> File: Default.aspx.cs using System; using System.Data; using System.Configuration; using System.Collections; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; using System.Data.SqlClient; public partial class LocalTransactions : System.Web.UI.Page {

   protected void Page_Load(object sender, EventArgs e)
   {
      ModifyData();
   }
  private void ModifyData()
  {
     string connString = ConfigurationManager.ConnectionStrings["Book"].ConnectionString;
     int pubIdToDelete = 9;
     SqlConnection conn = new SqlConnection(connString);
     SqlTransaction trans = null;
     try
     {
        conn.Open();
        trans = conn.BeginTransaction();
        string sqlA = "DELETE FROM Publishers ";
        sqlA += " WHERE PublisherId=@pubid";
        SqlCommand cmdA = new SqlCommand(sqlA, conn, trans);
        cmdA.Parameters.AddWithValue("@pubId", pubIdToDelete);
        cmdA.ExecuteNonQuery();
        string sqlB = "DELETE FROM NonExistantTable ";
        sqlB += " WHERE PublisherId=@pubid";
        SqlCommand cmdB = new SqlCommand(sqlB, conn, trans);
        cmdB.Parameters.AddWithValue("@pubId", pubIdToDelete);
        cmdB.ExecuteNonQuery();
        trans.rumit();
        labMsg.Text = "Database updated successfully";
     }
     catch (Exception ex)
     {
        labMsg.Text = "[btnUpdate_Click] ";
        labMsg.Text += "Error occurred accessing the database";
        labMsg.Text += "
" + ex.Message; if (trans != null) { trans.Rollback(); labMsg.Text += "
" + "Changes rolled back"; } } finally { conn.Close(); conn = null; } }

}</source>