<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://nfex.ru/index.php?action=history&amp;feed=atom&amp;title=ASP.NET_Tutorial%2FADO.net_Database%2FTransaction</id>
		<title>ASP.NET Tutorial/ADO.net Database/Transaction - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://nfex.ru/index.php?action=history&amp;feed=atom&amp;title=ASP.NET_Tutorial%2FADO.net_Database%2FTransaction"/>
		<link rel="alternate" type="text/html" href="http://nfex.ru/index.php?title=ASP.NET_Tutorial/ADO.net_Database/Transaction&amp;action=history"/>
		<updated>2026-04-16T16:23:13Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://nfex.ru/index.php?title=ASP.NET_Tutorial/ADO.net_Database/Transaction&amp;diff=2735&amp;oldid=prev</id>
		<title> в 15:30, 26 мая 2010</title>
		<link rel="alternate" type="text/html" href="http://nfex.ru/index.php?title=ASP.NET_Tutorial/ADO.net_Database/Transaction&amp;diff=2735&amp;oldid=prev"/>
				<updated>2010-05-26T15:30:57Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Версия 15:30, 26 мая 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; style=&quot;text-align: center;&quot; lang=&quot;ru&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(нет различий)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
			</entry>

	<entry>
		<id>http://nfex.ru/index.php?title=ASP.NET_Tutorial/ADO.net_Database/Transaction&amp;diff=2736&amp;oldid=prev</id>
		<title>Admin: 1 версия</title>
		<link rel="alternate" type="text/html" href="http://nfex.ru/index.php?title=ASP.NET_Tutorial/ADO.net_Database/Transaction&amp;diff=2736&amp;oldid=prev"/>
				<updated>2010-05-26T11:56:57Z</updated>
		
		<summary type="html">&lt;p&gt;1 версия&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Execute database commands within a single local transaction. You can test rollback and partial rollback.==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;%@ Page Language=&amp;quot;C#&amp;quot; AutoEventWireup=&amp;quot;true&amp;quot; CodeFile=&amp;quot;Default.aspx.cs&amp;quot; Inherits=&amp;quot;Default&amp;quot;%&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE html PUBLIC &amp;quot;-//W3C//DTD XHTML 1.1//EN&amp;quot; &amp;quot;http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;html xmlns=&amp;quot;http://www.w3.org/1999/xhtml&amp;quot; &amp;gt;&lt;br /&gt;
&amp;lt;head runat=&amp;quot;server&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;Begin Local Transactions&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
    &amp;lt;div id=&amp;quot;pageContent&amp;quot;&amp;gt;    &lt;br /&gt;
        &amp;lt;form id=&amp;quot;form1&amp;quot; runat=&amp;quot;server&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;h2&amp;gt;Click this button to display current data.&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;asp:Button id=&amp;quot;ShowButton&amp;quot; runat=&amp;quot;server&amp;quot; Text=&amp;quot;Show Data&amp;quot; OnClick=&amp;quot;ShowButton_Click&amp;quot;&amp;gt;&amp;lt;/asp:Button&amp;gt;&lt;br /&gt;
        &lt;br /&gt;
        &amp;lt;h2&amp;gt;Click this button to execute a transaction&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;asp:Button id=&amp;quot;ExecuteButton&amp;quot; runat=&amp;quot;server&amp;quot; Text=&amp;quot;Execute Transaction&amp;quot; OnClick=&amp;quot;ExecuteButton_Click&amp;quot;&amp;gt;&amp;lt;/asp:Button&amp;gt;&lt;br /&gt;
        &amp;lt;asp:CheckBox id=&amp;quot;CheckBox_Partial&amp;quot; runat=&amp;quot;server&amp;quot; Text=&amp;quot;Partial Rollback&amp;quot;&amp;gt;&amp;lt;/asp:CheckBox&amp;gt;&lt;br /&gt;
        &amp;lt;h2&amp;gt;Click this button to restore the original state of data&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;asp:Button id=&amp;quot;RestoreButton&amp;quot; runat=&amp;quot;server&amp;quot; Text=&amp;quot;Restore&amp;quot; OnClick=&amp;quot;RestoreButton_Click&amp;quot;&amp;gt;&amp;lt;/asp:Button&amp;gt;&lt;br /&gt;
        &amp;lt;hr&amp;gt;&lt;br /&gt;
        &amp;lt;asp:Label runat=&amp;quot;server&amp;quot; id=&amp;quot;lblMessage&amp;quot; /&amp;gt; &lt;br /&gt;
        &amp;lt;br&amp;gt;&lt;br /&gt;
        &amp;lt;asp:DataGrid id=&amp;quot;grid&amp;quot; runat=&amp;quot;server&amp;quot; visible=&amp;quot;False&amp;quot; CellPadding=&amp;quot;4&amp;quot; GridLines=&amp;quot;None&amp;quot; ForeColor=&amp;quot;#333333&amp;quot; CssClass=&amp;quot;shadowed&amp;quot; font-size=&amp;quot;X-Small&amp;quot; font-names=&amp;quot;verdana&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;AlternatingItemStyle BackColor=&amp;quot;White&amp;quot; /&amp;gt;&lt;br /&gt;
          &amp;lt;ItemStyle BackColor=&amp;quot;#EFF3FB&amp;quot; /&amp;gt;&lt;br /&gt;
          &amp;lt;HeaderStyle ForeColor=&amp;quot;White&amp;quot; BackColor=&amp;quot;#507CD1&amp;quot; Font-Bold=&amp;quot;True&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;FooterStyle BackColor=&amp;quot;#507CD1&amp;quot; Font-Bold=&amp;quot;True&amp;quot; ForeColor=&amp;quot;White&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;EditItemStyle BackColor=&amp;quot;#2461BF&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;SelectedItemStyle BackColor=&amp;quot;#D1DDF1&amp;quot; Font-Bold=&amp;quot;True&amp;quot; ForeColor=&amp;quot;#333333&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;PagerStyle BackColor=&amp;quot;#2461BF&amp;quot; ForeColor=&amp;quot;White&amp;quot; HorizontalAlign=&amp;quot;Center&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/asp:DataGrid&amp;gt;&lt;br /&gt;
        &amp;lt;/form&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
File: Default.aspx.cs&lt;br /&gt;
using System;&lt;br /&gt;
using System.Data;&lt;br /&gt;
using System.Data.SqlClient;&lt;br /&gt;
using System.Configuration;&lt;br /&gt;
using System.Collections;&lt;br /&gt;
using System.Web;&lt;br /&gt;
using System.Web.Security;&lt;br /&gt;
using System.Web.UI;&lt;br /&gt;
using System.Web.UI.WebControls;&lt;br /&gt;
public partial class Default : System.Web.UI.Page&lt;br /&gt;
{&lt;br /&gt;
    private const string ConnString = &amp;quot;SERVER=(local);DATABASE=northwind;Trusted_Connection=yes;&amp;quot;;&lt;br /&gt;
    private const string SelectCmd = &amp;quot;SELECT employeeid, firstname, lastname FROM Employees&amp;quot;;&lt;br /&gt;
    private const string UpdateCmd = &amp;quot;UPDATE Employees SET firstname=&amp;quot;Michela&amp;quot; WHERE EmployeeID=1&amp;quot;;&lt;br /&gt;
    private const string InsertCmd = &amp;quot;INSERT INTO Employees (firstname,lastname) VALUES (&amp;quot;Dino&amp;quot;, &amp;quot;Esposito&amp;quot;)&amp;quot;;&lt;br /&gt;
    protected void ShowButton_Click(object sender, EventArgs e)&lt;br /&gt;
    {&lt;br /&gt;
        using (SqlConnection conn = new SqlConnection(ConnString))&lt;br /&gt;
        {&lt;br /&gt;
            SqlCommand cmd = new SqlCommand();&lt;br /&gt;
            cmd.Connection = conn;&lt;br /&gt;
            cmd.rumandText = SelectCmd;&lt;br /&gt;
            conn.Open();&lt;br /&gt;
            grid.DataSource = cmd.ExecuteReader();&lt;br /&gt;
            grid.DataBind();&lt;br /&gt;
            grid.Visible = true;&lt;br /&gt;
            conn.Close();&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    protected void ExecuteButton_Click(object sender, EventArgs e)&lt;br /&gt;
    {&lt;br /&gt;
        using (SqlConnection conn = new SqlConnection(ConnString))&lt;br /&gt;
        {&lt;br /&gt;
            SqlCommand cmd = new SqlCommand();&lt;br /&gt;
            cmd.Connection = conn;&lt;br /&gt;
            conn.Open();&lt;br /&gt;
            SqlTransaction t = conn.BeginTransaction();&lt;br /&gt;
            cmd.Transaction = t;&lt;br /&gt;
            try&lt;br /&gt;
            {&lt;br /&gt;
                cmd.rumandText = UpdateCmd;&lt;br /&gt;
                cmd.ExecuteNonQuery();&lt;br /&gt;
                t.Save(&amp;quot;AfterUpdate&amp;quot;);&lt;br /&gt;
                cmd.rumandText = InsertCmd;&lt;br /&gt;
                cmd.ExecuteNonQuery();&lt;br /&gt;
                if (CheckBox_Partial.Checked)&lt;br /&gt;
                    t.Rollback(&amp;quot;AfterUpdate&amp;quot;);&lt;br /&gt;
                t.rumit();&lt;br /&gt;
                lblMessage.Text = &amp;quot;&amp;lt;b&amp;gt;Done&amp;lt;/b&amp;gt;&amp;quot;;&lt;br /&gt;
                grid.Visible = false;&lt;br /&gt;
            }&lt;br /&gt;
            catch (Exception exc)&lt;br /&gt;
            {&lt;br /&gt;
                t.Rollback();&lt;br /&gt;
                lblMessage.Text = &amp;quot;&amp;lt;b&amp;gt;Error occurred: &amp;lt;/b&amp;gt;&amp;quot; + exc.Message;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    protected void RestoreButton_Click(object sender, EventArgs e) {&lt;br /&gt;
        using (SqlConnection conn = new SqlConnection(ConnString)) {&lt;br /&gt;
            SqlCommand cmd = new SqlCommand();&lt;br /&gt;
            cmd.Connection = conn;&lt;br /&gt;
            conn.Open();&lt;br /&gt;
            SqlTransaction t = conn.BeginTransaction();&lt;br /&gt;
            cmd.Transaction = t;&lt;br /&gt;
            try {&lt;br /&gt;
                cmd.rumandText = &amp;quot;UPDATE Employees SET firstname=&amp;quot;Nancy&amp;quot; WHERE EmployeeID=1&amp;quot;;&lt;br /&gt;
                cmd.ExecuteNonQuery();&lt;br /&gt;
                cmd.rumandText = &amp;quot;DELETE FROM Employees WHERE EmployeeID &amp;gt;9&amp;quot;;&lt;br /&gt;
                cmd.ExecuteNonQuery();&lt;br /&gt;
                t.rumit();&lt;br /&gt;
                lblMessage.Text = &amp;quot;&amp;lt;b&amp;gt;Done&amp;lt;/b&amp;gt;&amp;quot;;&lt;br /&gt;
                grid.Visible = false;&lt;br /&gt;
            }&lt;br /&gt;
            catch (Exception exc)&lt;br /&gt;
            {&lt;br /&gt;
                t.Rollback();&lt;br /&gt;
                lblMessage.Text = &amp;quot;&amp;lt;b&amp;gt;Error occurred: &amp;lt;/b&amp;gt;&amp;quot; + exc.Message;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
== Use transaction to group operations (VB.net)==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;%@ Page Language=&amp;quot;VB&amp;quot; %&amp;gt;&lt;br /&gt;
&amp;lt;%@ Import Namespace=&amp;quot;System.Data&amp;quot; %&amp;gt;&lt;br /&gt;
&amp;lt;%@ Import Namespace=&amp;quot;System.Data.OleDb&amp;quot; %&amp;gt;&lt;br /&gt;
&amp;lt;script runat=&amp;quot;server&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;quot;declare connection&lt;br /&gt;
   dim Conn as new OleDbConnection( _&lt;br /&gt;
            &amp;quot;PROVIDER=Microsoft.Jet.OLEDB.4.0;&amp;quot; _&lt;br /&gt;
            &amp;amp; &amp;quot;DATA SOURCE=&amp;quot; _&lt;br /&gt;
            &amp;amp; Server.MapPath(&amp;quot;EmployeeDatabase.mdb;&amp;quot;))&lt;br /&gt;
   sub Page_Load(Sender as Object, e as EventArgs)&lt;br /&gt;
      dim objTrans as OleDbTransaction&lt;br /&gt;
      dim objCmd as OleDbCommand = new OleDbCommand _&lt;br /&gt;
         (&amp;quot;DELETE from employee where UserID = 32&amp;quot;, Conn)&lt;br /&gt;
      Conn.Open()&lt;br /&gt;
      objTrans = Conn.BeginTransaction()&lt;br /&gt;
      objCmd.Transaction = objTrans&lt;br /&gt;
          try&lt;br /&gt;
         objCmd.rumandText = &amp;quot;INSERT INTO employee &amp;quot; &amp;amp; _&lt;br /&gt;
            &amp;quot;(ID, FirstName, LastName) VALUES &amp;quot; &amp;amp; _&lt;br /&gt;
            &amp;quot;(109, &amp;quot;J&amp;quot;, &amp;quot;S&amp;quot;)&amp;quot;&lt;br /&gt;
         objCmd.ExecuteNonQuery()&lt;br /&gt;
         objCmd.rumandText = &amp;quot;INSERT INTO employee &amp;quot; &amp;amp; _&lt;br /&gt;
            &amp;quot;(ID, FirstName, LastName) VALUES &amp;quot; &amp;amp; _&lt;br /&gt;
            &amp;quot;(119, &amp;quot;J&amp;quot;, &amp;quot;S&amp;quot;)&amp;quot;&lt;br /&gt;
         objCmd.ExecuteNonQuery()&lt;br /&gt;
         objTrans.rumit()&lt;br /&gt;
             Label1.Text = &amp;quot;Both operations performed successfully&amp;quot;&lt;br /&gt;
      catch ex as OleDbException&lt;br /&gt;
         objTrans.RollBack()&lt;br /&gt;
         Label1.Text = ex.Message &amp;amp; &amp;quot;&amp;quot;&lt;br /&gt;
         Label1.Text = &amp;quot;Both operations failed&amp;quot;&lt;br /&gt;
      finally&lt;br /&gt;
         objCmd.Connection.Close()&lt;br /&gt;
      end try&lt;br /&gt;
   end sub&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&amp;lt;body&amp;gt;&lt;br /&gt;
   &amp;lt;form runat=&amp;quot;server&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;asp:Label id=&amp;quot;Label1&amp;quot; runat=&amp;quot;server&amp;quot;&lt;br /&gt;
         maintainstate=false /&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
   &amp;lt;/form&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&amp;lt;/html&amp;gt;&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	</feed>