在程序中使用存储过程

                                   使用输入参数的存储过程

在ip表中插入记录并显示


1.在查询分析器创建存储过程:
在存储过程中,参数都位于CREATE PROC参数名之后及AS之前,并且使用@符号标识参数变量。
在其后的SQL语句中可以直接使用声明的参数进行占位。
CREATE PROCEDURE  存储过程名称
@参数1,
@参数2,
@参数n
AS
SQL语句

  存储过程(1)
该存储过程用来显示表中的所有信息:

CREATE PROC SELECT_IP
AS
SELECT * FROM ip
 
 存储过程(2)
该存储过程用来执行命令,在文本框添加记录。
CREATE PROC INSERT_IP
(
  @ip varchar(40),
  @time datetime
)
AS
INSERT INTO ip(ip,time)
VALUES(@ip,@time)

2.添加GridView控件,并绑定ip,time两个字段
3.执行代码如下:
using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Data.SqlClient;
namespace test
{
    public partial class storeage : System.Web.UI.Page
    {
        static string strconn = "Data Source=localhost;database=BOOKS;integrated security=SSPI";
        SqlConnection conn = new SqlConnection(strconn);
        SqlCommand cmd;
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
            loadGridView();
            }
        }

          //显示记录
        protected void loadGridView()
        {
            if (conn.State == ConnectionState.Open)
                conn.Close();
            conn.Open();
            cmd = new SqlCommand("SELECT_IP", conn);//显示记录集用的存储过程
            cmd.CommandType = CommandType.StoredProcedure;
            GV.DataSource = cmd.ExecuteReader();
            GV.DataBind();
            conn.Close();
        }
          //添加记录
        protected void Add_Click(object sender, EventArgs e)
        {
            conn.Open();
            cmd = new SqlCommand("INSERT_IP", conn);//添加时用的存储过程
            cmd.CommandType = CommandType.StoredProcedure;//指定为存储过程
            cmd.Parameters.Add("@ip", SqlDbType.VarChar, 40);
            cmd.Parameters.Add("@time", SqlDbType.DateTime);

            cmd.Parameters["@ip"].Value = TextBoxIP.Text;
            cmd.Parameters["@time"].Value = TextBoxTIME.Text;

            cmd.ExecuteNonQuery();
            loadGridView();
            conn.Close();
        }
    }
}

           使用输出参数的存储过程
可以通过输出参数确认记录是否已经删除,下面的例子通过在textbox中的输入值来删除指定记录。
1.还是使用先前的ip表。先创建存储过程:
CREATE PROC RETURN_VALUE 
@id int, 
@result int output 
AS 
IF EXISTS(SELECT * FROM ip WHERE id=@id) 
BEGIN 
DELETE FROM ip WHERE id=@id 
SET @result=1 
END 
ELSE 
SET @result=-1 


2.在Gridview添加删除按钮和用来显示删除信息的label。
3.执行代码如下:
  protected void btnDel_Click(object sender, EventArgs e)
        {
            conn.Open();
            cmd = new SqlCommand("RETURN_VALUE", conn);//删除时用的存储过程
            cmd.CommandType = CommandType.StoredProcedure;//指定为存储过程

            cmd.Parameters.Add("@id", SqlDbType.VarChar);
            cmd.Parameters["@id"].Value = TextBoxDel.Text;
            cmd.Parameters.Add("@result", SqlDbType.Int);
            cmd.Parameters["@result"].Direction = ParameterDirection.Output;//指定为输出
             
            cmd.ExecuteNonQuery(); 

            int returnValue =Convert.ToInt32(cmd.Parameters["@result"].Value);
            if (returnValue == 1)
                message.Text = "删除成功";
            else
                message.Text = "删除失败";
            loadGridView();
          
           conn.Close();
        }
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值