asp.net 执行事务代码 |
本文标签:asp.net,执行事务 //数据库执行区, SqlConnection _sqlConn = null; SqlTransaction _SqlTrans = null; try { //数据库操作类 _sqlConn = System.mySQLConnection.SqlConnections.GetSQLConnection();//见下面的类 _sqlConn.Open(); // sql事务对象 _SqlTrans = _sqlConn.BeginTransaction(); //基本信息执行SQL语句情况 bool StudentInfo_YN = false; if (hid_StudentIDValue == "") { StudentInfo_YN = (System.mySQLConnection.SqlConnections.UpdateOrDelete(_sqlConn, _SqlTrans, sql语句) > 0) ? true : false; } else { StudentInfo_YN = true; } bool baoMing_YN = false; //报名基本信息执行SQL语句情况 if (StudentInfo_YN) { //获取报名的o_flowid号,由数据库产生 baoMing_YN = (System.mySQLConnection.SqlConnections.UpdateOrDelete(_sqlConn, _SqlTrans, sql语句) > 0) ? true : false; } else { baoMing_YN = false; } bool baomingdetail_YN = false; //报名的课程详细信息执行SQL语句情况 if (baoMing_YN) { baomingdetail_YN = (System.mySQLConnection.SqlConnections.UpdateOrDelete(_sqlConn, _SqlTrans, sql语句) > 0) ? true : false; } else { baomingdetail_YN = false; } //收费表SQL语句情况 //if (baoMing_YN) //{ // baomingdetail_YN = (System.mySQLConnection.SqlConnections.UpdateOrDelete(_sqlConn, _SqlTrans, sql语句) > 0) ? true : false; //} //else //{ // baomingdetail_YN = false; //} //总的判断全部释放成功 。 if (baomingdetail_YN) { //提交事务,清除Session验证码 _SqlTrans.Commit(); MessageBox.alert(Page, "报名成功 。", "window.location.href=addBaoMing.aspx"); } else { _SqlTrans.Rollback(); MessageBox.alert(Page, "报名失败 。"); return; } } catch (SqlException sqlE) { MessageBox.alert(Page, "提交异常 " + sqlE.Message.Replace("\"", "")); } finally { if (_sqlConn != null) _sqlConn.Close(); if (_SqlTrans != null) _SqlTrans.Dispose(); } 写在SqlConnections的类中(一般放在app_code,也可放在三层架构的类中) //当前连接的是第几个 。 static int count = 0; //最大连接量 static int maxCount = 30; static SqlConnection[] sqlConns = new SqlConnection[maxCount]; //自己创建自己 static SqlConnections myConn = new SqlConnections(); //初始化 private SqlConnections() { for (int i = 0; i < maxCount; i++) { sqlConns[i] = new SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["ADOStr"].ToString()); } } // 获取数据库连接 public static int UpdateOrDelete(String sqlTxt) { SqlConnection sqlConnTemp = SqlConnections.GetSQLConnection(); try { SqlCommand sqlCommT = new SqlCommand(sqlTxt, sqlConnTemp); sqlConnTemp.Open(); return sqlCommT.ExecuteNonQuery(); } catch (SqlException sqlE) { return 0; } finally { sqlConnTemp.Close(); } } public static SqlConnection GetSQLConnection() { try { try { sqlConns[count].Close(); } catch (Exception eeX) { } return sqlConns[count]; } finally { //当前个数自加 。 。 if (count == (maxCount - 1)) { count = 0; } else { count++; } } } |