• MSSQL


    效果:

    创建带有事物的存储过程:

    use sales  --指定数据库
     
    create table bb  --创建bb 这个表
    (
        ID int not null primary key ,--账号
        Moneys money --转账金额
    )
     
    --bb表里插入两条数据
    insert into bb values('1',2000)  --账户 1 里有2000元
    insert into bb values('2',3000)  --账户 2 里有3000元
    go
     
     
     
     
     
    if(exists(select * from sys.objects where name='proc_bb')) --如果存储这条存储过程存在则先删除
    drop  proc Proc_bb
    go
     
    create proc Proc_bb  --创建名字为Proc_bb的存储过程 带3个参数
    (
        @fromID int,  --转出账户
        @toID int,    --接收转账的账户 
        @momeys money --转账金额
    )
    as
    begin  tran --开始执行事务
     
    update bb set Moneys=Moneys-@momeys where ID=@fromID  ---执行的第一个操作,转账 原来的金额-转账的金额
     
    update bb set Moneys=Moneys+@momeys where ID=@toID --执行第二个操作,接受转账  原来的的金额+转账的金额
     
    if @@ERROR<>0 --判断  如果两条语句有任何一条出现错误。(如果前面的SQL 语句执行没有错误,则返回0)
    begin
    rollback tran --开始执行事务的回滚,恢复转账开始之前的状态
    return 0
    end
     
    else  --如果两个语句都执行成功
    begin
    commit tran --执行这个事务的操作
    end
    go
     
     
     
    exec Proc_bb 1,2 ,2000  --执行这条存储过程;  转账账户为 1  接收账户为  2  转账的金额为 2000元
    

     

    前端代码:

    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm2.aspx.cs" Inherits="用户激活.WebForm2" %>
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title></title>
    </head>
    <body>
        <form id="form1" runat="server">
        转账账户:<asp:TextBox ID="ToID" runat="server"></asp:TextBox></br>
        接收账户:<asp:TextBox ID="FromID" runat="server"></asp:TextBox></br>
        转账金额:<asp:TextBox ID="Money" runat="server"></asp:TextBox></br>
        转账是否成功:<asp:Label ID="Msg" runat="server" Text=""></asp:Label></br>
     
        <asp:Button ID="Button1" runat="server" Text="提交转账" onclick="Button1_Click" />
        </form>
    </body>
    </html>
    

      

    后端代码:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Configuration;
    using System.Data.SqlClient;
     
    namespace 用户激活
    {
        public partial class WebForm2 : System.Web.UI.Page
        {
            protected void Page_Load(object sender, EventArgs e)
            {
     
            }
     
            protected void Button1_Click(object sender, EventArgs e)
            {
                string connStr=ConfigurationManager.ConnectionStrings["ConnStr"].ConnectionString;
                using (SqlConnection conn = new SqlConnection(connStr))
                {
                    conn.Open();
                    using (SqlCommand cmd = conn.CreateCommand())
                    {
                        //SqlParameter sqlParameter=new SqlParameter();
                        SqlParameter [] sqlParameters={
                                                         new SqlParameter("@toID",ToID.Text.Trim()),
                                                         new SqlParameter("fromID",FromID.Text.Trim()),
                                                         new  SqlParameter("@money",Money.Text.Trim())
                                                      
                                                     };
     
                        cmd.CommandText = "exec Proc_bb @toID, @fromID, @money";
                        cmd.Parameters.AddRange(sqlParameters);
     
                        int i= cmd.ExecuteNonQuery();
     
                        if (i > 0)
                        {
                            Msg.Text = "转账成功";
                        }
                        else
                        {
                            Msg.Text = "转账失败";
                        }
                         
                    }
                }
            }
        }
    }
    

     

  • 相关阅读:
    Zookeeper 集群安装
    Jexus部署.Net Core项目
    NetCore1.1+Linux部署初体验
    Linux初学
    高可用Redis服务架构分析与搭建
    前端开发JS白板编程题目若干
    Javascript中的Microtask和Macrotask——从一道很少有人能答对的题目说起
    ES6原生Promise的所有方法介绍(附一道应用场景题目)
    HTML的iframe标签妙用
    漫谈PHP代码规范
  • 原文地址:https://www.cnblogs.com/KTblog/p/4622199.html
Copyright © 2020-2023  润新知