ASP.NET MySQL Transaction (BeginTransaction,Commit,Rollback) |
ASP.NET MySQL Transaction (BeginTransaction,Commit,Rollback) ตัวอย่างการเขียนโปรแกรม ASP.NET กับ MySQL ในการเรียกใช้งาน Transaction ควบคุมและตรวจสอบความถูกต้องของข้อมูลก่อนที่จะมีการกระทำการใด ๆ กับ Database
เพิ่มเติม
ในการใช้งาน Transaction จะต้องกำหนดชนิดของ Table เป็นแบบ InnoDB
InnoDB Syntax
CREATE TABLE `customer` (
.
.
.
.
) ENGINE=InnoDB;
ตัวอย่าง
ตัวอย่างนี้จะเป็นการเพิ่มข้อมูล โดยผมได้สมมุติการเพิ่มข้อมูลซ้ำ ซึ่งมี Primary Key ชื่อ CustomerID ซึ่งจะสามารถเพิ่มข้อมูลสำเร็จใน Statement แรก และ Statement ที่ 2 จะไม่สามารถเพิ่มข้อมูลได้ และเมื่อมีการ RollBack ข้อมูล Statement แรกที่ถูก Insert ไปแล้วก็จะถูกยกเลิกในทันที สำหรับการใช้ Transaction สามารถใช้ได้ทั้งการ Insert/Update Record
Instance NameSpace
VB.NETImports System.Data
Imports MySql.Data.MySqlClient
ASP.NET & MySql.Data.MySqlClient
Language Code : VB.NET || C#
AspNetMySqlTransaction.aspx
<%@ import Namespace="System.Data" %>
<%@ import Namespace="MySql.Data.MySqlClient" %>
<%@ Page Language="VB" %>
<script runat="server">
Sub Page_Load(sender As Object, e As EventArgs)
End Sub
Sub btnSave_Click(sender As Object, e As EventArgs)
Dim objConn As New MySqlConnection
Dim objCmd As New MySqlCommand
Dim strConnString,strSQL As String
Dim Trans As MySqlTransaction
Me.pnlAdd.Visible = False
strConnString = "Server=localhost;User Id=root; Password=root; Database=mydatabase; Pooling=false"
objConn.ConnectionString = strConnString
objConn.Open()
Trans = objConn.BeginTransaction(IsolationLevel.ReadCommitted) '*** Start Transaction ***'
With objCmd
.Connection = objConn
.Transaction = Trans '*** Command & Transaction ***'
End With
Try
'*** Query 1 ***'
strSQL = "INSERT INTO customer (CustomerID,Name,Email,CountryCode,Budget,Used) " & _
" VALUES " & _
" ('" & Me.txtCustomerID.Text & "','" & Me.txtName.Text & "','" & Me.txtEmail.Text & "', " & _
" '" & Me.txtCountryCode.Text & "','" & Me.txtBudget.Text & "','" & Me.txtUsed.Text & "')"
objCmd.CommandText = strSQL
objCmd.CommandType = CommandType.Text
objCmd.ExecuteNonQuery()
'*** End Query 1 ***'
'*** Query 2 ***'
strSQL = "INSERT INTO customer (CustomerID,Name,Email,CountryCode,Budget,Used) " & _
" VALUES " & _
" ('" & Me.txtCustomerID.Text & "','" & Me.txtName.Text & "','" & Me.txtEmail.Text & "', " & _
" '" & Me.txtCountryCode.Text & "','" & Me.txtBudget.Text & "','" & Me.txtUsed.Text & "')"
objCmd.CommandText = strSQL
objCmd.CommandType = CommandType.Text
objCmd.ExecuteNonQuery()
'*** End Query 2 ***'
Trans.Commit() '*** Commit Transaction ***'
Me.lblStatus.Text = "Record Inserted"
Me.lblStatus.Visible = True
Catch ex As Exception
Trans.Rollback() '*** RollBack Transaction ***'
Me.lblStatus.Visible = True
Me.lblStatus.Text = "Record can not insert Error ("& ex.Message &")"
End Try
objConn.Close()
objConn = Nothing
End Sub
</script>
<html>
<head>
<title>ThaiCreate.Com ASP.NET - MySQL</title>
</head>
<body>
<form id="form1" runat="server">
<asp:Panel id="pnlAdd" runat="server">
<table width="353" border="1">
<tbody>
<tr>
<td width="102">
<asp:Label id="lblCustomerID" runat="server" text="CustomerID"></asp:Label></td>
<td width="235">
<asp:TextBox id="txtCustomerID" runat="server" Width="79px"></asp:TextBox>
</td>
</tr>
<tr>
<td>
<asp:Label id="lblName" runat="server" text="Name"></asp:Label></td>
<td>
<asp:TextBox id="txtName" runat="server" Width="177px"></asp:TextBox>
</td>
</tr>
<tr>
<td>
<asp:Label id="lblEmail" runat="server" text="Email"></asp:Label></td>
<td>
<asp:TextBox id="txtEmail" runat="server" Width="155px"></asp:TextBox>
</td>
</tr>
<tr>
<td>
<asp:Label id="lblCountryCode" runat="server" text="CountryCode"></asp:Label></td>
<td>
<asp:TextBox id="txtCountryCode" runat="server" Width="38px"></asp:TextBox>
</td>
</tr>
<tr>
<td>
<asp:Label id="lblBudget" runat="server" text="Budget"></asp:Label></td>
<td>
<asp:TextBox id="txtBudget" runat="server" Width="76px"></asp:TextBox>
</td>
</tr>
<tr>
<td>
<asp:Label id="lblUsed" runat="server" text="Used"></asp:Label></td>
<td>
<asp:TextBox id="txtUsed" runat="server" Width="76px"></asp:TextBox>
</td>
</tr>
</tbody>
</table>
<br />
<asp:Button id="btnSave" onclick="btnSave_Click" runat="server" Text="Save"></asp:Button>
<br />
</asp:Panel>
<asp:Label id="lblStatus" runat="server" visible="False"></asp:Label>
</form>
</body>
</html>
หมายเหตุ
MySQL Version จะต้อง Support Transaction
Screenshot
เพิ่มเติม
MySQL Database จะต้องกำหนด Type เป็น InnoDB เพื่อรองรับการทำงาน Transaction
ASP.NET MySql.Data.MySqlClient - Parameter Query
|
ช่วยกันสนับสนุนรักษาเว็บไซต์ความรู้แห่งนี้ไว้ด้วยการสนับสนุน Source Code 2.0 ของทีมงานไทยครีเอท
|
|
|
By : |
ThaiCreate.Com Team (บทความเป็นลิขสิทธิ์ของเว็บไทยครีเอทห้ามนำเผยแพร่ ณ เว็บไซต์อื่น ๆ) |
|
Score Rating : |
|
|
|
Create/Update Date : |
2008-10-26 22:58:32 /
2017-03-29 10:09:41 |
|
Download : |
|
|
Sponsored Links / Related |
|
|
|
|
|
|
|