zoukankan      html  css  js  c++  java
  • 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 = "转账失败";
                        }
                         
                    }
                }
            }
        }
    }
    

     

  • 相关阅读:
    idea 快捷键ctrl+shift+f失效的解决方案
    Nacos2.0启动遇到的问题以及解决方法(自测有效)
    Nacos客户端升级到2.x版本后,启动出现9848端口错误解决
    用友Co 与直接插库速度比较
    CSS text-decoration_下划线
    uni-app组件之image
    JavaScript :Array数组之filter()——检查指定数组符合条件的所有元素
    爬虫与Python:(三)基本库的使用——2.网络请求库之request安装
    爬虫与Python:(三)基本库的使用——1.网络请求库之urllib()
    Python报错:TypeError: string argument without an encoding
  • 原文地址:https://www.cnblogs.com/KTblog/p/4622199.html
Copyright © 2011-2022 走看看