asp.net 代码执行事务

本文介绍了一种使用SQL事务进行学生信息、报名信息及详细信息批量更新的方法,并通过具体的代码示例展示了如何确保数据库操作的一致性和完整性。

         //数据库执行区,
        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++;
                }
            }
        }

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值