[C#] <%@ WebService Language="C#" Class="Orders" %> <%@ Assembly name="System.EnterpriseServices,Version=1.0.3300.0,Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" %> using System; using System.Data; using System.Data.SqlClient; using System.Web.Services; using System.EnterpriseServices;
public class Orders : WebService { [ WebMethod(TransactionOption=TransactionOption.RequiresNew)] public int DeleteAuthor(string lastName) { String deleteCmd = "DELETE FROM authors WHERE au_lname='" + lastName + "'" ; String exceptionCausingCmdSQL = "DELETE FROM NonExistingTable WHERE au_lname='" + lastName + "'" ;
SqlConnection sqlConn = new SqlConnection( "Persist Security Info=False;Integrated Security=SSPI;database=pubs;server=myserver");
SqlCommand deleteCmd = new SqlCommand(deleteCmdSQL,sqlConn); SqlCommand exceptionCausingCmd = new SqlCommand(exceptionCausingCmdSQL,sqlConn);
// This command should execute properly. deleteCmd.Connection.Open(); deleteCmd.ExecuteNonQuery();
// This command results in an exception, so the first command is // automatically rolled back. Since the XML Web service method is // participating in a transaction, and an exception occurs, ASP.NET // automatically aborts the transaction. The deleteCmd that // executed properly is rolled back.
int cmdResult = exceptionCausingCmd.ExecuteNonQuery();
sqlConn.Close();
return cmdResult; } } [Visual Basic] <%@ WebService Language="VB" Class="Orders" %> <%@ assembly name="System.EnterpriseServices" %>
Imports System Imports System.Data Imports System.Data.SqlClient Imports System.Web.Services Imports System.Web.Util Imports System.EnterpriseServices
Public Class Orders
<WebMethod(TransactionOption:=TransactionOption.RequiresNew)> _ Public Function DeleteAuthor (lastName as String) as Integer
Dim deleteCmdSQL As String = "DELETE FROM authors WHERE au_lname='" + _ lastName + "'" Dim exceptionCausingCmdSQL As String = "DELETE FROM " + _ "NonExistingTable WHERE au_lname='" + lastName + "'"
Dim sqlConn As SqlConnection = New SqlConnection( _ "Persist Security Info=False;Integrated Security=SSPI;database=pubs;server=myserver")
Dim deleteCmd As SqlCommand = New SqlCommand(deleteCmdSQL,sqlConn) Dim exceptionCausingCmd As SqlCommand = New _ SqlCommand(exceptionCausingCmdSQL,sqlConn)
' This command should execute properly. deleteCmd.Connection.Open() deleteCmd.ExecuteNonQuery()
' This command results in an exception, so the first command is ' automatically rolled back. Since the XML Web service method is ' participating in a transaction, and an exception occurs, ASP.NET ' automatically aborts the transaction. The deleteCmd that ' executed properly is rolled back.
Dim cmdResult As Integer = exceptionCausingCmd.ExecuteNonQuery() sqlConn.Close()
Return cmdResult End Function End Class |