ASP.Netのお勉強

SqlDataSourceでトランザクション@ASP.Net

SqlDataSourceでトランザクション処理を行います。
以下では、update文発行処理にて、トランザクション処理を行います。

SqlDataSourceのUpdatingをハンドルします。
コネクションをオープンし、トランザクションを開始します。

SqlDataSourceのUpdatedをハンドルします。
ExecuteNonQueryを発行し、成功ならばコミットをします。
失敗した場合は、ロールバックを行います。

●vb

Partial Class _Default
    Inherits System.Web.UI.Page


    Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click

        'update文
        SqlDataSource1.UpdateCommand = "UPDATE TABLE SET NAME = @NAME WHERE ID = @ID"

        'パラメータセット
        SqlDataSource1.UpdateParameters.Clear()
        SqlDataSource1.UpdateParameters.Add("NAME", "名前10")
        SqlDataSource1.UpdateParameters.Add("ID", "10")

        'update文実行
        SqlDataSource1.Update()

    End Sub

    Protected Sub SqlDataSource1_Updating(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.SqlDataSourceCommandEventArgs) Handles SqlDataSource1.Updating
        Dim cmd As System.Data.Common.DbCommand
        Dim con As System.Data.Common.DbConnection
        Dim trn As System.Data.Common.DbTransaction

        cmd = e.Command
        con = cmd.Connection
        con.Open()
        trn = con.BeginTransaction()
        cmd.Transaction = trn
    End Sub

    Protected Sub SqlDataSource1_Updated(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.SqlDataSourceStatusEventArgs) Handles SqlDataSource1.Updated
        Dim cmd As System.Data.Common.DbCommand
        Dim trn As System.Data.Common.DbTransaction

        cmd = e.Command
        trn = cmd.Transaction

        Try
            cmd.ExecuteNonQuery()
            trn.Commit()
        Catch ex As Exception
            trn.Rollback()
        End Try
    End Sub
End Class

Copyright (C) ASP.Netのお勉強. All Rights Reserved.