使用ADO,NET来调用存储过程可以分为一下4种方式
1)调用不带参数的存储过程
2)调用带一个参数的存储过程
3)调用带多个参数的存储过程
4)调用带输出参数的存储过程
(本代码示例所使用的存储过程,使用的是作者的上一篇博文所创建的存储过程,博文地址:http://blog.csdn.net/yisuowushinian/article/details/8045481,请大家参考)
一,ADO.NET调用不带参数的存储过程,使用的存储过程是上篇博文示例1-1创建的存储过程
具体的调用代码1-1演示如下:
/// <summary> /// 调用不带参数的存储过程 /// 调用不带参数的存储过程的意义不大,一般的查询都是有条件的查询 /// </summary> public void ShowData1() { SqlConnection con = new SqlConnection(strConString); //实例化SqlCommand对象,参数对象指定为所要访问存储过程的名称 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代码如下:
/// <summary> /// 调用带一个参数的存数过程 /// </summary> public void 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对象 DataTable table = new DataTable(); adapter.Fill(table); DataRow Dr = table.Rows[0]; Response.Write(Dr[3].ToString()); }三,ADO.NET调用带多个参数的存储过程,本示例1-3代码以两个参数的作为演示,更多的参数,可以参照该示例,使用的存储过程为上篇博文的示例1-2
/// <summary> /// 调用带两个参数的参数数组 /// </summary> public void 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对象 DataTable table = new DataTable(); adapter.Fill(table); DataRow Dr = table.Rows[0]; Response.Write(Dr[3].ToString()); }
四,ADO.NET访问带输出参数的存储过程,本示例1-4代码以输入一个且输出一个参数的作为演示,更多的参数,可以参照该示例,使用的存储过程为上篇博文的示例1-4
/// <summary> /// 调用带返回值的存储过程 /// </summary> public void 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的表连接查询,多表查询,分页,等知识。
版权声明:本文为博主原创文章,未经博主允许不得转载。