zoukankan      html  css  js  c++  java
  • .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();
            }
  • 相关阅读:
    创业日志N,一听到别人说创业我就怕
    《创业维艰分享之五》所有得,有所乐,日事日清,循序渐进。
    创业维艰--分享技术人做产品与做市场的一些经验
    创业维艰--最艰难的时候
    angular js 在ie11 下的get请求缓存问题的解决办法
    《创业维艰-分享创业中遇到的困难之二》----破局
    xwalk_core_library-15.44.384 .13.aar 百度云分享
    linux常用命令
    Merge into 用法
    多线程的并发控制
  • 原文地址:https://www.cnblogs.com/dichuan/p/8183113.html
Copyright © 2011-2022 走看看