asp.net 3.5 csharp 实现事务代码
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Web; 5 using System.Web.UI; 6 using System.Web.UI.WebControls; 7 using System.Data; 8 using System.Data.SqlClient; 9 using System.Globalization; 10 using System.IO; 11 using System.Text; 12 using System.Security.Cryptography; 13 using System.Web.UI.HtmlControls; 14 using System.Transactions; // 必需添加引用 15 16 17 18 public partial class transaction : System.Web.UI.Page 19 { 20 private SqlConnection oConn = null ; 21 22 private string strMessage; 23 24 private SqlTransaction transactions = null ; 25 26 protected void Page_Load( object sender, EventArgs e) 27 { 28 Response.Charset = " utf-8 " ; 29 Response.ContentEncoding = Encoding.UTF8; 30 Session.CodePage = 65001 ; 31 Page.Header.Title = " 缔友计算机信息技术有限公司,涂聚文 너를 환 영한다 " ; 32 33 HtmlMeta meta = new HtmlMeta(); 34 meta.Name = " keywords " ; 35 meta.Content = " 捷为工作室,締友計算機信息技術有限公司,塗聚文,开发国际化多种语言,兼容各浏览器的网站,个性化应用软件 너를 환 영한다 " ; // SiteMap.CurrentNode["keywords"]; 36 Page.Header.Controls.AddAt( 1 , meta); 37 38 HtmlMeta meta1 = new HtmlMeta(); 39 meta1.Name = " description " ; 40 meta1.Content = " China,Guangdong Province,Shenzhen 너를 환 영한다 " ; 41 Page.Header.Controls.AddAt( 2 , meta1); 42 43 HtmlMeta author = new HtmlMeta(); 44 author.Name = " Author " ; 45 author.Content = " 涂聚文 geovindu@163.com " ; 46 Page.Header.Controls.AddAt( 3 , author); 47 48 HtmlLink cssLink = new HtmlLink(); 49 cssLink.Href = " ~/styles.css " ; 50 cssLink.Attributes.Add( " rel " , " stylesheet " ); 51 cssLink.Attributes.Add( " type " , " text/css " ); 52 Header.Controls.Add(cssLink); 53 54 HtmlLink ico = new HtmlLink(); 55 ico.Href = " favicon.ico " ; 56 ico.Attributes.Add( " rel " , " icon " ); 57 ico.Attributes.Add( " type " , " image/x-icon " ); 58 Header.Controls.Add(ico); 59 } 60 /// <summary> 61 /// 操作事务 62 /// </summary> 63 /// <param name="sender"></param> 64 /// <param name="e"></param> 65 protected void Button1_Click( object sender, EventArgs e) 66 { 67 /* 68 --sql脚本事务 69 create procedure proc_EdmEmail_insert 70 as 71 begin 72 begin transaction 73 insert into EdmEamil(e_mail,vipno) values('geovindu@jw28.com','edm00001') 74 insert into EdmEamil(e_mail,vipno) values('463588883@qq.com','edm00002') 75 76 if(@@error<>0) 77 begin 78 --出错后回滚事务 79 rollback transaction 80 return 0; 81 end; 82 --提交事务 83 commit transaction 84 return 1; 85 end; 86 GO 87 88 EXEC proc_EdmEmail_insert 89 90 */ 91 try 92 { 93 oConn = new SqlConnection(); 94 oConn.ConnectionString = " server=.; database=Vip; uid=sa; pwd=0214; " ; 95 SqlCommand oCmd = oConn.CreateCommand(); 96 oConn.Open(); 97 transactions = oConn.BeginTransaction(); // 啟動一個事務 98 oCmd.Transaction = transactions; 99 100 oCmd.CommandText = " insert into EdmEamil(e_mail,vipno) values( ' " + this .TextBox1.Text.Trim() + " ',' " + this .TextBox2.Text.Trim() + " ') " ; 101 oCmd.ExecuteNonQuery(); 102 103 104 105 // 如果整個事務操作執行正確,則提效事務 106 transactions.Commit(); 107 strMessage = " 成功完成 " ; 108 } 109 catch (Exception ex) 110 { 111 112 strMessage = ex.Message.ToString(); 113 try 114 { 115 // 如果插入數據操作失敗,則事務向前回滾 116 transactions.Rollback(); 117 strMessage = strMessage + " 事務向前回滾 " ; 118 oConn.Close(); 119 120 } 121 catch (Exception exs) 122 { 123 strMessage = strMessage + exs.Message.ToString(); 124 } 125 126 } 127 Response.Write( "" + strMessage + "" ); 128 } 129 /// <summary> 130 /// 131 /// </summary> 132 /// <param name="sender"></param> 133 /// <param name="e"></param> 134 protected void Button2_Click( object sender, EventArgs e) 135 { 136 try 137 { 138 using (TransactionScope scope = new TransactionScope()) 139 { 140 oConn = new SqlConnection(); 141 oConn.ConnectionString = " server=.; database=Vip; uid=sa; pwd=0214; " ; 142 SqlCommand oCmd = oConn.CreateCommand(); 143 oConn.Open(); 144 145 oCmd.CommandText = " insert into EdmEamil(e_mail,vipno) values( ' " + this .TextBox1.Text.Trim() + " ',' " + this .TextBox2.Text.Trim() + " ') " ; 146 oCmd.ExecuteNonQuery(); 147 148 149 150 scope.Complete(); 151 strMessage = "" ; 152 153 } 154 } 155 catch (TransactionException ett) 156 { 157 strMessage = " 事務出錯 " ; 158 strMessage = strMessage + ett.Message.ToString(); 159 } 160 catch (Exception ex) 161 { strMessage = strMessage + ex.Message.ToString(); } 162 } 163 } 164