存储过程事务的使用

#region "事务"
            //create table [user]
            //(
            //    uname  varchar(5),
            //    password varchar(10),
            //    age   int,
            //    address  varchar(10)
            //)

            //delete from [user] where uname = '李四'
            //update [user] set address = '合肥工大' where uname = '张三'
            //insert into [user] values ('王五', 'aaa', 24, '工大西门')

            //delete from [user]
            //insert into [user] values ('张三', 'abc', 21, '安徽合肥')
            //insert into [user] values ('李四', 'xyz', 22, '清华IT')
            //select * from [user]
        #endregion
        void 事务()
        {
            OleDbConnection con = new OleDbConnection(sqlcon);
            con.Open();

            OleDbTransaction tra = con.BeginTransaction();  // 启动事务

            OleDbCommand cmd = new OleDbCommand();
            cmd.Connection = con;
            cmd.Transaction = tra;
           
            string s =
            @"begin
                  delete from [user] where uname = '李四';
                  update [user] set address = '合肥工大' where uname = '张三';
                  insert into [user] values ('王五', 'aaa', 24, '工大西门');
              end";

            try
            {
                cmd.CommandText = s;
                int iRowNum = cmd.ExecuteNonQuery();    // 注意: 返回值

                tra.Commit();       // 事务提交
            }
            catch
            {
                tra.Rollback();     // 事务回滚
            }

            con.Close();
        }

        #region "存储过程"
            //create proc 转帐 @金额 int
            //as
            //update bank set [money] = [money] - @金额 where uname = '张三'
            //update bank set [money] = [money] + @金额 where uname = '李四'

            //create table bank
            //(
            //    uname varchar(5),
            //    [money] int
            //)

            //delete from bank
            //insert into bank values('张三', 20000)
            //insert into bank values('李四', 100)
            //select * from bank

            //exec 转帐 500 
        #endregion
        void 存储过程()
        {
            OleDbConnection con = new OleDbConnection(sqlcon);
            con.Open();

            OleDbParameter par = new OleDbParameter();
            par.ParameterName = "金额";         // 参数名称
            par.OleDbType = OleDbType.Integer;  // 参数数据类型
            par.Value = 500;                    // 参数值

            OleDbCommand cmd = new OleDbCommand();
            cmd.Connection = con;
            cmd.CommandType = CommandType.StoredProcedure;  // 命令是存储过程
            cmd.Parameters.Add(par);                        // 添加参数

            cmd.CommandText = "转帐";
            cmd.ExecuteNonQuery();

            con.Close();
        }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值