(C#) ASP.NET MySQL Transaction (BeginTransaction,Commit,Rollback) |
(C#) 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
C#Using System.Data;
Using 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="C#" Debug="true" %>
<script runat="server">
void Page_Load(object sender,EventArgs e)
{
}
void btnSave_Click(Object sender, EventArgs e)
{
MySqlConnection objConn = new MySqlConnection();
MySqlCommand objCmd = new MySqlCommand();
String strConnString,strSQL;
MySqlTransaction Trans;
this.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 ***//
objCmd.Connection = objConn;
objCmd.Transaction = Trans; //*** Command & Transaction ***//
try
{
//*** Query 1 ***//
strSQL = "INSERT INTO customer (CustomerID,Name,Email,CountryCode,Budget,Used) " +
" VALUES " +
" ('" + this.txtCustomerID.Text + "','" + this.txtName.Text + "','" + this.txtEmail.Text + "', " +
" '" + this.txtCountryCode.Text + "','" + this.txtBudget.Text + "','" + this.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 " +
" ('" + this.txtCustomerID.Text + "','" + this.txtName.Text + "','" + this.txtEmail.Text + "', " +
" '" + this.txtCountryCode.Text + "','" + this.txtBudget.Text + "','" + this.txtUsed.Text + "')";
objCmd.CommandText = strSQL;
objCmd.CommandType = CommandType.Text;
objCmd.ExecuteNonQuery();
//*** End Query 2 ***//
Trans.Commit(); //*** Commit Transaction ***//
this.lblStatus.Text = "Record Inserted";
this.lblStatus.Visible = true;
}
catch (Exception ex)
{
Trans.Rollback(); //*** RollBack Transaction ***//
this.lblStatus.Visible = true;
this.lblStatus.Text = "Record can not insert Error ("+ ex.Message +")";
}
objConn.Close();
objConn = null;
}
</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 |
|
|
|
|
|
|
|