使用存储过程、事务、webpage实现转账。

--思路1要有存储过程,存储过程中包含事务。参数应该有3个(转入账号,转出账号,金额)
/*
update bank set ammonut=amonut-金额 where id=转出账号
update bank set ammonut=amonut+金额 where id=转入账号

*/

create table Bank(id int identity,amonut float)
insert into Bank values(100)
insert into Bank values (1000)
select * from Bank

alter table Bank
add constraint CH_amonut check (amonut>=10)

------------------------------------------------------------

Sql Server存储过程:

create proc usp_Bank_trans
@outputNumber int,
@inputNumber int,
@moneyNumber money
as
begin
begin tran
begin try
declare @errorsum int=0
update Bank set amonut=amonut-@moneyNumber where id=@outputNumber
set @errorSum=@errorSum+@@error
update Bank set amonut=amonut+@moneyNumber where id=@inputNumber
set @errorSum=@errorSum+@@error
commit
print '提交!!'
end try
begin catch
  rollback
  print '回滚!'
end catch
end

--------------------------------------------------------------------------------------------------

aspx前台:


app.configer:

<connectionStrings>
 <add name="MySchoolconStr" connectionString="Data Source=PC_THINK-THINK;Initial Catalog=MySchool;User ID=sa; Password=111111"/>
  </connectionStrings>

---------------------------------------------------------------------------------------------

后台代码:

 string Constr = ConfigurationManager.ConnectionStrings["MySchoolconStr"].ConnectionString;
        
        protected void btnZhiXing_Click(object sender, EventArgs e)
        {
            using (SqlConnection conn = new SqlConnection(Constr))
            {
                conn.Open();
                string sp_name = "usp_Bank_trans";
                using (SqlCommand cmd = new SqlCommand(sp_name, conn))
                {
                    cmd.CommandType = CommandType.StoredProcedure;
                    cmd.Parameters.Add(new SqlParameter("@outputNumber", txtoutputNumber.Text));
                    cmd.Parameters.Add(new SqlParameter("@inputNumber", txtinputNumber.Text));
                    cmd.Parameters.Add(new SqlParameter("@moneyNumber", txtmoneyNumber.Text));
                    int r = cmd.ExecuteNonQuery();
                    if (r > 0)
                    {
                        Label1.Text = "转入成功!";
                    }
                    else
                    {
                        Label1.Text = "转入失败!";
                    }
                }
            }
        }

----------------------------------------------------------------------------------------------------



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值