ASP.Net/ADO.net Database/Transaction SqlConnection
Содержание
Implicit Transactions using TransactionScope
<source lang="csharp">
<%@ Page Language="C#" %> <%@ Import Namespace="System.Data" %> <%@ Import Namespace="System.Data.SqlClient" %> <%@ Import Namespace="System.Transactions" %> <%@ Import Namespace="System.Web.Configuration" %> <script runat="server">
void btnSave_Click(object sender, EventArgs e) { try { int categoryID; string connectionString = WebConfigurationManager.ConnectionStrings["AdventureWorks"].ConnectionString; using (TransactionScope scope = new TransactionScope()) { using (SqlConnection connection = new SqlConnection(connectionString)) { categoryID = InsertCategory(connection); } scope.ruplete(); } lblResult.Text= "Category is written successfully. Category ID= " + categoryID.ToString(); } catch (Exception ex) { lblResult.Text= "Exception is : " + ex.Message; } } int InsertCategory(SqlConnection connection) { string sql = "Insert into Production.ProductCategory(Name," + "rowguid, ModifiedDate) Values(@Name, @rowguid, @ModifiedDate); SELECT @@IDENTITY"; connection.Open(); SqlCommand command = new SqlCommand(sql, connection); command.rumandType = CommandType.Text; SqlParameter nameParam = new SqlParameter("@Name", SqlDbType.NVarChar, 50); nameParam.Value = txtCategoryName.Text; command.Parameters.Add(nameParam); SqlParameter guidParam = new SqlParameter("@rowguid", SqlDbType.UniqueIdentifier); guidParam.Value = System.Guid.NewGuid(); command.Parameters.Add(guidParam); SqlParameter modifieDateParam = new SqlParameter("@ModifiedDate", SqlDbType.DateTime); modifieDateParam.Value = System.DateTime.Now; command.Parameters.Add(modifieDateParam); int categoryID = Convert.ToInt32(command.ExecuteScalar()); return categoryID; }
</script> <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server">
<title>Implicit Transactions using TransactionScope</title>
</head> <body>
<form id="form1" runat="server">
<asp:Label ID="lblCategoryName" runat="server" Text="Category Name:" Width="179px"></asp:Label> <asp:TextBox ID="txtCategoryName" runat="server"/> <asp:Button ID="btnSave" runat="server" Text="Save" Width="92px" OnClick="btnSave_Click"/>
<asp:Label ID="lblResult" runat="server" Font-Bold="true" Font-Size="Small" />
</form>
</body> </html>
</source>
Open connection and begin transaction
<source lang="csharp">
<%@ Page Language="C#" %> <%@ import Namespace="System.Data" %> <%@ import Namespace="System.Data.SqlClient" %> <script runat="server"> SqlTransaction _Transact; void page_load(Object Sender, EventArgs E) {
String ConnectionString = "Server=localhost; Database=pubs; uid=sa; pwd=;"; String CommandText = "UPDATE authors SET state="PU" WHERE state="UT""; String CommandText2 = "UPDATE authors SET au_id="1" WHERE au_id="2""; SqlConnection _Connection = new SqlConnection(ConnectionString); SqlCommand _Command = new SqlCommand(); try{ _Connection.Open(); _Transact = _Connection.BeginTransaction(); _Command.Connection = _Connection; _Command.Transaction = _Transact; _Command.rumandText = CommandText; _Command.ExecuteNonQuery(); _Command.rumandText = CommandText2; _Command.ExecuteNonQuery(); _Transact.rumit(); MessageLiteralControl.Text = "Transaction Successful!"; }catch (Exception Err){ _Transact.Rollback(); MessageLiteralControl.Text = "Transaction Failed!
" + Err.Message; } finally{ _Connection.Close(); }
} </script> <html>
<body> <form runat="server" ID="Form1">
<asp:Label id="MessageLabel" runat="server" EnableViewState="false"></asp:Label>
</form> </body>
</html>
</source>
Using Explicit Transactions using CommittableTransaction
<source lang="csharp">
<%@ Page Language="C#" %> <%@ Import Namespace="System.Data" %> <%@ Import Namespace="System.Data.SqlClient" %> <%@ Import Namespace="System.Transactions" %> <%@ Import Namespace="System.Web.Configuration" %> <script runat="server">
void btnSave_Click(object sender, EventArgs e) { CommittableTransaction trans = new CommittableTransaction(); try { string connectionString = WebConfigurationManager.ConnectionStrings["AdventureWorks"].ConnectionString; using (SqlConnection connection = new SqlConnection(connectionString)) { string sql = "Insert into Production.ProductCategory(Name,rowguid, ModifiedDate) Values(@Name, @rowguid, @ModifiedDate)"; connection.Open(); SqlCommand command = new SqlCommand(sql, connection); command.rumandType = CommandType.Text; SqlParameter nameParam = new SqlParameter("@Name", SqlDbType.NVarChar, 50); nameParam.Value = txtCategoryName.Text; command.Parameters.Add(nameParam); SqlParameter guidParam = new SqlParameter("@rowguid", SqlDbType.UniqueIdentifier); guidParam.Value = System.Guid.NewGuid(); command.Parameters.Add(guidParam); SqlParameter modifieDateParam = new SqlParameter("@ModifiedDate", SqlDbType.DateTime); modifieDateParam.Value = System.DateTime.Now; command.Parameters.Add(modifieDateParam); connection.EnlistTransaction(trans); command.ExecuteNonQuery(); trans.rumit(); } lblResult.Text = "Category is written successfully"; } catch (Exception ex) { trans.Rollback(); lblResult.Text = "Exception is : " + ex.Message; } }
</script> <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server">
<title>Using Explicit Transactions using CommittableTransaction</title>
</head> <body>
<form id="form1" runat="server">
<asp:Label ID="lblCategoryName" runat="server" Text="Category Name:" Width="179px"></asp:Label> <asp:TextBox ID="txtCategoryName" runat="server"/> <asp:Button ID="btnSave" runat="server" Text="Save" Width="92px" OnClick="btnSave_Click"/>
<asp:Label ID="lblResult" runat="server" Font-Bold="true" Font-Size="Small" />
</form>
</body> </html>
</source>
Working with Transactions with an SQL Server Database
<source lang="csharp">
<%@ Page Language=VB Debug=true %> <%@ Import Namespace="System.Data" %> <%@ Import Namespace="System.Data.SQLClient" %> <script runat=server> Sub Page_Load(ByVal Sender as Object, ByVal E as EventArgs)
Dim DBConn as SQLConnection Dim DBDelete As New SQLCommand Dim DBTrans As SQLTransaction
" DBConn = New SQLConnection("server=localhost;" _
" & "Initial Catalog=TT;" _ " & "User Id=sa;" _ " & "Password=yourpassword;") DBConn = New SQLConnection("Data Source=whsql-v08.prod.mesa1.secureserver.net;Initial Catalog=DB_49907;User ID=nfexuser;Password="password";") DBConn.Open() DBTrans = DBConn.BeginTransaction() DBDelete.Connection = DBConn DBDelete.Transaction = DBTrans DBDelete.rumandText = "Delete From Employee " _ & "Where ID = 1" DBDelete.ExecuteNonQuery() DBDelete.rumandText = "Delete From Employee " _ & "Where ID = 2" DBDelete.ExecuteNonQuery() DBTrans.RollBack() lblMessage.Text = "No action was taken." "DBTrans.rumit()
End Sub
</SCRIPT>
<HTML>
<HEAD>
<TITLE>Working with Transactions with an SQL Server Database</TITLE>
</HEAD>
<Body LEFTMARGIN="40">
<form runat="server">
<asp:label
id="lblMessage" runat="Server"
/> </form> </BODY> </HTML>
</source>