使用ADO,NET来调用存储过程可以分为一下4种方式
1)调用不带参数的存储过程
2)调用带一个参数的存储过程
3)调用带多个参数的存储过程
4)调用带输出参数的存储过程
(本代码示例所使用的存储过程,使用的是作者的上一篇博文所创建的存储过程,博文地址:,请大家参考)
一,ADO.NET调用不带参数的存储过程,使用的存储过程是上篇博文示例1-1创建的存储过程
具体的调用代码1-1演示如下:
1 public void ShowData1() 2 { 3 SqlConnection con = new SqlConnection(strConString); 4 //实例化SqlCommand对象,参数对象指定为所要访问存储过程的名称 5 SqlCommand cmd = new SqlCommand("select_activity", con); 6 //指定命令类型为存储过程 7 cmd.CommandType = CommandType.StoredProcedure; 8 //创建数据集 9 SqlDataAdapter adapter = new SqlDataAdapter(cmd);10 DataTable table = new DataTable();11 adapter.Fill(table);12 13 DataRow Dr = table.Rows[0];14 Response.Write(Dr[3].ToString());15 16 }
二,因为上篇博文没有创建只有一个参数的存储过程,创建过程如下:
1 --创建带一个参数的存储过程2 create proc select_activity33 @id int4 as5 --该存储过程所执行的sql命令6 select * from T_Activity where id=@id;7 8 --调用select_activity存储过程9 exec select_activity3 5
ADO.NET调用带一个参数的存储过程的示例1-2代码如下:
1 ///2 /// 调用带一个参数的存数过程 3 /// 4 public void ShowData2() 5 { 6 SqlConnection con = new SqlConnection(strConString); 7 SqlCommand cmd = new SqlCommand("select_activity3", con); 8 //指定命令类型为存储过程 9 cmd.CommandType = CommandType.StoredProcedure;10 11 //声明参数对象12 SqlParameter parameter = new SqlParameter();13 //指定参数名14 parameter.ParameterName = "@id";15 //指定参数的数据类型16 parameter.SqlDbType = SqlDbType.Int;17 //给参数赋值18 parameter.Value = 5;19 //将命令对象加入命令对象的参数集合中20 cmd.Parameters.Add(parameter);21 SqlDataAdapter adapter = new SqlDataAdapter(cmd);22 //创建DataTable对象23 DataTable table = new DataTable();24 adapter.Fill(table);25 26 DataRow Dr = table.Rows[0];27 Response.Write(Dr[3].ToString());28 29 }
三,ADO.NET调用带多个参数的存储过程,本示例1-3代码以两个参数的作为演示,更多的参数,可以参照该示例,使用的存储过程为上篇博文的示例1-2
1 ///2 /// 调用带两个参数的参数数组 3 /// 4 public void ShowData3() 5 { 6 SqlConnection con = new SqlConnection(strConString); 7 SqlCommand cmd = new SqlCommand("select_activity1", con); 8 //指定命令类型为存储过程 9 cmd.CommandType = CommandType.StoredProcedure;10 11 //声明一个多维的参数数组12 SqlParameter[] parameter = 13 {14 new SqlParameter("@id",SqlDbType.Int,4),15 new SqlParameter("@activityName",SqlDbType.NVarChar,50)16 };17 parameter[0].Value = 5;18 //给参数赋值19 parameter[1].Value = "比武招亲";20 //将命令对象加入命令对象的参数集合中21 cmd.Parameters.AddRange(parameter);22 SqlDataAdapter adapter = new SqlDataAdapter(cmd);23 //创建DataTable对象24 DataTable table = new DataTable();25 adapter.Fill(table);26 27 DataRow Dr = table.Rows[0];28 Response.Write(Dr[3].ToString());29 }
四,ADO.NET访问带输出参数的存储过程,本示例1-4代码以输入一个且输出一个参数的作为演示,更多的参数,可以参照该示例,使用的存储过程为上篇博文的示例1-4
1 ///2 /// 调用带返回值的存储过程 3 /// 4 public void ShowData4() 5 { 6 SqlConnection con = new SqlConnection(strConString); 7 SqlCommand cmd = new SqlCommand("select_MathResult", con); 8 cmd.CommandType = CommandType.StoredProcedure; 9 SqlParameter[] parameter = {10 new SqlParameter("@activityName",SqlDbType.NVarChar,50),11 new SqlParameter("@result",SqlDbType.Int,4)12 };13 14 parameter[0].Value = "比武招亲";15 //设定输出参数的输出方法向16 parameter[1].Direction = ParameterDirection.Output;17 cmd.Parameters.AddRange(parameter);18 SqlDataAdapter adapter = new SqlDataAdapter(cmd);19 DataTable table = new DataTable();20 adapter.Fill(table);21 Response.Write(Convert.ToInt32(cmd.Parameters[1].Value));22 }
这样就完成了ADO.NET对Sql Server存储过程的访问的所有示例。因为在整理的时候发现内容太多,无法在一篇博文完成,只能分为若干篇。请大家继续关注我的博客,下次将为大家更新,Sql Server的表连接查询,多表查询,分页,等知识。