当前位置: 首页 > news >正文

.NET使用存储过程实现对数据库的增删改查

一、整体思路

先建立存储过程,再通过.net 调用存储过程,来实现对表的增删改查。

二、新建数据库及存储过程

打开SqlServer2008,新建数据库orm1,及表Student。

 

数据库和表建立好我们现在来建立存储过程。

存储过程 ad :新增学生信息

复制代码
CREATE PROCEDURE ad
    @sid char(10) ,
    @sname char(10),
    @sage int
AS
    insert into  Student values(@sid,@sname,@sage)
RETURN 0
复制代码

第一句 ad 代表的是存储过程的名字,AS之前的@sid、@sname、@sage 为输入或输出参数,默认是输入参数,如果需要设置为输出参数,则需要在参数后面添加 OUTPUT,也就是这样:

    @sname char(10) OUTPUT,

还有就是仔细看你会发现,最后一个参数是末尾是不需要加逗号的!

那么现在我们来执行下这个存储过程,是否正确。

在SqlServer2008中,选中该存储过程,右键 执行存储过程 ,会弹出输入窗口,输入对应的学生信息,点确定即可运行。

执行后,查看数据库,发现新增的信息已经插入数据库,代表新建存储过程成功!

 

三、.NET调用存储过程

先新建 WebForm1.aspx 文件

复制代码
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="WebApplication3.WebForm1" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
        <div>
            学号:<asp:TextBox ID="sid" runat="server"></asp:TextBox>
        </div>
         <div>
            姓名:<asp:TextBox ID="sname" runat="server"></asp:TextBox>
        </div>
         <div>
            年龄:<asp:TextBox ID="sage" runat="server"></asp:TextBox>
        </div>
        <div>
            <asp:Button ID="Add" runat="server" Text="新增" OnClick="Add_Click" />
            <asp:Button ID="Select" runat="server" Text="查询" OnClick="Select_Click" />
            <asp:Button ID="Delete" runat="server" Text="删除" OnClick="Delete_Click" />
            <asp:Button ID="Update" runat="server" Text="修改" OnClick="Update_Click" />
            <asp:Button ID="ShowAll" runat="server" Text="显示所有" OnClick="ShowAll_Click"  />
        </div>
        <div>
            <asp:GridView ID="GridView1" runat="server"></asp:GridView>
        </div>
    </form>
</body>
</html>
复制代码

新增学生信息

然后,打开对应的 cs 文件,编写新增方法 Add_Click

复制代码
        protected void Add_Click(object sender, EventArgs e)
        {
            String constr = "Data Source=.;database=orm1;Integrated Security=True";
            SqlConnection con = new SqlConnection(constr);              //新建连接
            con.Open();                                                 //打开连接
            SqlCommand cmd = con.CreateCommand();                       //创建sqlCommand对象
            cmd.CommandText = "ad";                                     //调用存储过程 ad
            cmd.CommandType = CommandType.StoredProcedure;              //设置cmd的执行类型为存储过程
            cmd.Parameters.AddWithValue("@sid", sid.Text);              //设置参数并赋值
            cmd.Parameters.AddWithValue("@sname", sname.Text);          //设置参数并赋值
            cmd.Parameters.AddWithValue("@sage", int.Parse(sage.Text)); //设置参数并赋值
            if (cmd.ExecuteNonQuery() > 0)                              //执行存储过程
            {
                Response.Write("添加成功!");
            }
            else
            {
                Response.Write("添加失败");
            }
            con.Close();                                                //关闭连接
        }
复制代码

运行这段代码就可以执行存储过程了。

查询学生信息

新增功能完成了,现在我们来看看如何实现查询学习信息的功能吧。

同样是先建存储过程 ss。

复制代码
CREATE PROCEDURE ss
    @sid char(10)
AS
BEGIN

    SELECT * FROM Student WHERE @sid = Student.sid
END
复制代码

调用存储过程 ss

复制代码
        protected void Select_Click(object sender, EventArgs e)
        {
            String constr = "Data Source=.;Initial Catalog=orm1;Integrated Security=True";
            SqlConnection con = new SqlConnection(constr);
            con.Open();                                                 //打开连接
            SqlCommand cmd = new SqlCommand("ss", con);                 //使用存储过程
            cmd.CommandType = CommandType.StoredProcedure;              //设置Command对象的类型
            SqlParameter spr;                                           //表示执行一个存储过程
            spr = cmd.Parameters.Add("@sid", SqlDbType.NChar,10);       //增加参数id
            cmd.Parameters["@sid"].Value = sid.Text;                    //为参数初始化
            GridView1.DataSource = cmd.ExecuteReader();                 //执行存储过程并将数据绑定在GridView
            GridView1.DataBind();
            con.Close();                                                //关闭存储过程
        }
复制代码

 

这次我们运行程序看下效果吧

我们输入我们前面新建的sid 200,点击查询

到这里,相信大家应该能了解如何使用.net 调用存储过程了,所以,修改、删除功能我就直接贴代码了。

修改学生信息

复制代码
CREATE PROCEDURE ud
    @sid nchar(10) ,
    @sname nchar(10),
    @sage int
AS
    update Student set Student.sname=@sname,Student.sage=@sage where Student.sid=@sid
RETURN 0
复制代码
复制代码
        protected void Update_Click(object sender, EventArgs e)
        {
            String constr = "data source=.;database=orm1;Integrated Security=true";
            SqlConnection con = new SqlConnection(constr);
            con.Open();
            SqlCommand cmd = con.CreateCommand();
            cmd.CommandText = "ud";
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Parameters.AddWithValue("@sid", sid.Text);
            cmd.Parameters.AddWithValue("@sname", sname.Text);
            cmd.Parameters.AddWithValue("@sage", int.Parse(sage.Text));
            if (cmd.ExecuteNonQuery() >0)
            {
                Response.Write("修改成功");
            }
            else
            {
                Response.Write("修改失败");
            }
            con.Close();
            
        }
复制代码

 

删除学生信息

CREATE PROCEDURE de
    @sid char(10)
AS
    delete FROM Student WHERE @sid = Student.sid
复制代码
        protected void Delete_Click(object sender, EventArgs e)
        {
            String constr = "Data Source=.;database=orm1;Integrated Security=True";
            SqlConnection sqlConnection = new SqlConnection(constr);
            sqlConnection.Open();
            SqlCommand cmd = sqlConnection.CreateCommand();
            cmd.CommandText = "de";
            cmd.CommandType = CommandType.StoredProcedure;
            SqlParameter spr;
            spr = cmd.Parameters.Add("@sid", SqlDbType.NChar, 10);
            cmd.Parameters["@sid"].Value = sid.Text;
            if (cmd.ExecuteNonQuery() > 0)
            {
                Response.Write("删除成功!");
            }
            else
            {
                Response.Write("删除失败");
            }
            sqlConnection.Close();
        }
复制代码

相关文章:

  • extends继承
  • 《SqlServer 系列》 - 函数
  • Android 100+行实现本地跳一跳辅助(不需要连接电脑)
  • MyBatis DAO层传递参数到mapping.xml
  • 微内核与面向组件
  • 运维学python之爬虫中级篇(二)线程、协程
  • 资料推荐--Google Java编码规范
  • Python中的string模块的学习
  • bzoj千题计划205:bzoj3529: [Sdoi2014]数表
  • 关于多线程的参数问题
  • sudo、磁盘结构、echo,awk,python计算、RAID0和1的区别
  • jsp页面按时间排序
  • 18载艰苦创业,曾动念房地产转型,讯飞的江湖夜雨和桃李春风
  • UML--------------------类图
  • 如何使用MACS进行peak calling
  • -------------------- 第二讲-------- 第一节------在此给出链表的基本操作
  • [分享]iOS开发-关于在xcode中引用文件夹右边出现问号的解决办法
  • 11111111
  • 2019年如何成为全栈工程师?
  • Apache Spark Streaming 使用实例
  • canvas绘制圆角头像
  • gf框架之分页模块(五) - 自定义分页
  • golang中接口赋值与方法集
  • IDEA常用插件整理
  • java 多线程基础, 我觉得还是有必要看看的
  • js继承的实现方法
  • Mysql优化
  • node和express搭建代理服务器(源码)
  • Promise面试题2实现异步串行执行
  • Spring Boot快速入门(一):Hello Spring Boot
  • spring security oauth2 password授权模式
  • Swoft 源码剖析 - 代码自动更新机制
  • 基于阿里云移动推送的移动应用推送模式最佳实践
  • 记录一下第一次使用npm
  • 开源地图数据可视化库——mapnik
  • 马上搞懂 GeoJSON
  • 国内唯一,阿里云入选全球区块链云服务报告,领先AWS、Google ...
  • $.ajax()参数及用法
  • $.ajax中的eval及dataType
  • ( 用例图)定义了系统的功能需求,它是从系统的外部看系统功能,并不描述系统内部对功能的具体实现
  • (2022 CVPR) Unbiased Teacher v2
  • (32位汇编 五)mov/add/sub/and/or/xor/not
  • (SpringBoot)第七章:SpringBoot日志文件
  • (附源码)springboot宠物管理系统 毕业设计 121654
  • (附源码)springboot码头作业管理系统 毕业设计 341654
  • (附源码)计算机毕业设计ssm基于Internet快递柜管理系统
  • (汇总)os模块以及shutil模块对文件的操作
  • (三)uboot源码分析
  • (十) 初识 Docker file
  • (十七)Flask之大型项目目录结构示例【二扣蓝图】
  • (转)es进行聚合操作时提示Fielddata is disabled on text fields by default
  • (转)Scala的“=”符号简介
  • .babyk勒索病毒解析:恶意更新如何威胁您的数据安全
  • .net core 6 使用注解自动注入实例,无需构造注入 autowrite4net
  • .NET Core SkiaSharp 替代 System.Drawing.Common 的一些用法