使用输入参数的存储过程
在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();
}
在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();
}