使用ADO,NET来调用存储过程可以分为一下4种方式
1)调用不带参数的存储过程
2)调用带一个参数的存储过程
3)调用带多个参数的存储过程
4)调用带输出参数的存储过程
(本代码示例所使用的存储过程,使用的是作者的上一篇博文所创建的存储过程,博文地址:http://yisuowushinian.blog.51cto.com/4241271/1016524 ,请大家参考)
一,ADO.NET调用不带参数的存储过程,使用的存储过程是上篇博文示例1-1创建的存储过程
具体的调用代码1-1演示如下:
-
-
-
-
-
publicvoid ShowData1()
-
{
-
SqlConnection con = new SqlConnection(strConString);
-
-
SqlCommand cmd = new SqlCommand("select_activity", con);
-
-
cmd.CommandType = CommandType.StoredProcedure;
-
-
SqlDataAdapter adapter = new SqlDataAdapter(cmd);
-
DataTable table = new DataTable();
-
adapter.Fill(table);
-
DataRow Dr = table.Rows[0];
-
Response.Write(Dr[3].ToString());
-
}
二,因为上篇博文没有创建只有一个参数的存储过程,创建过程如下:
-
--创建带一个参数的存储过程
-
create proc select_activity3
-
@id int
-
as
-
--该存储过程所执行的sql命令
-
select * from T_Activity where id=@id;
-
--调用select_activity存储过程
-
exec select_activity3 5
ADO.NET调用带一个参数的存储过程的示例1-2代码如下:
-
-
-
-
publicvoid ShowData2()
-
{
-
SqlConnection con = new SqlConnection(strConString);
-
SqlCommand cmd = new SqlCommand("select_activity3", con);
-
-
cmd.CommandType = CommandType.StoredProcedure;
-
-
SqlParameter parameter = new SqlParameter();
-
-
parameter.ParameterName = "@id";
-
-
parameter.SqlDbType = SqlDbType.Int;
-
-
parameter.Value = 5;
-
-
cmd.Parameters.Add(parameter);
-
SqlDataAdapter adapter = new SqlDataAdapter(cmd);
-
-
DataTable table = new DataTable();
-
adapter.Fill(table);
-
DataRow Dr = table.Rows[0];
-
Response.Write(Dr[3].ToString());
-
}
三,ADO.NET调用带多个参数的存储过程,本示例1-3代码以两个参数的作为演示,更多的参数,可以参照该示例,使用的存储过程为上篇博文的示例1-2
-
-
-
-
publicvoid ShowData3()
-
{
-
SqlConnection con = new SqlConnection(strConString);
-
SqlCommand cmd = new SqlCommand("select_activity1", con);
-
-
cmd.CommandType = CommandType.StoredProcedure;
-
-
SqlParameter[] parameter =
-
{
-
new SqlParameter("@id",SqlDbType.Int,4),
-
new SqlParameter("@activityName",SqlDbType.NVarChar,50)
-
};
-
parameter[0].Value = 5;
-
-
parameter[1].Value = "比武招亲";
-
-
cmd.Parameters.AddRange(parameter);
-
SqlDataAdapter adapter = new SqlDataAdapter(cmd);
-
-
DataTable table = new DataTable();
-
adapter.Fill(table);
-
DataRow Dr = table.Rows[0];
-
Response.Write(Dr[3].ToString());
-
}
四,ADO.NET访问带输出参数的存储过程,本示例1-4代码以输入一个且输出一个参数的作为演示,更多的参数,可以参照该示例,使用的存储过程为上篇博文的示例1-4
-
-
-
-
publicvoid ShowData4()
-
{
-
SqlConnection con = new SqlConnection(strConString);
-
SqlCommand cmd = new SqlCommand("select_MathResult", con);
-
cmd.CommandType = CommandType.StoredProcedure;
-
SqlParameter[] parameter = {
-
new SqlParameter("@activityName",SqlDbType.NVarChar,50),
-
new SqlParameter("@result",SqlDbType.Int,4)
-
};
-
parameter[0].Value = "比武招亲";
-
-
parameter[1].Direction = ParameterDirection.Output;
-
cmd.Parameters.AddRange(parameter);
-
SqlDataAdapter adapter = new SqlDataAdapter(cmd);
-
DataTable table = new DataTable();
-
adapter.Fill(table);
-
Response.Write(Convert.ToInt32(cmd.Parameters[1].Value));
-
}
这样就完成了ADO.NET对Sql Server存储过程的访问的所有示例。因为在整理的时候发现内容太多,无法在一篇博文完成,只能分为若干篇。请大家继续关注我的博客,下次将为大家更新,Sql Server的表连接查询,多表查询,分页,等知识。
本文转自yisuowushinian 51CTO博客,原文链接:http://blog.51cto.com/yisuowushinian/1016527,如需转载请自行联系原作者