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();
            }
  • 相关阅读:
    用 Python 带你看各国 GDP 变迁
    Fluent Interface(流式接口)
    probing privatePath如何作用于ASP.NET MVC View
    Word插入htm文件导致文本域动态增加的一个问题
    Visual Studio 2013附加进程调试IE加载的ActiveX Control无效解决方法
    Ubuntu下Chrome运行Silverlight程序
    Windows Phone Bing lock screen doesn't change解决方法
    SPClaimsUtility.AuthenticateFormsUser的证书验证问题
    Web Service Client使用Microsoft WSE 2.0
    Visual Studio 2013安装Update 3启动crash的解决方法
  • 原文地址:https://www.cnblogs.com/dichuan/p/8183113.html
Copyright © 2011-2022 走看看