• 网络工作室暑假后第二次培训资料(SQLServer存储过程和ADO.NET访问存储过程)整理(二)


    使用ADO,NET来调用存储过程可以分为一下4种方式

    1)调用不带参数的存储过程

    2)调用带一个参数的存储过程

    3)调用带多个参数的存储过程

    4)调用带输出参数的存储过程

    (本代码示例所使用的存储过程,使用的是作者的上一篇博文所创建的存储过程,博文地址:http://www.cnblogs.com/qq731109249/archive/2012/10/07/2714236.html,请大家参考)

    一,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_activity3
    3 @id int
    4 as
    5 --该存储过程所执行的sql命令
    6 select * from T_Activity where id=@id;
    7 
    8 --调用select_activity存储过程
    9 exec select_activity3 5

    ADO.NET调用带一个参数的存储过程的示例1-2代码如下:

     1 /// <summary>
     2         /// 调用带一个参数的存数过程
     3         /// </summary>
     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 /// <summary>
     2         /// 调用带两个参数的参数数组
     3         /// </summary>
     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 /// <summary>
     2         /// 调用带返回值的存储过程
     3         /// </summary>
     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的表连接查询,多表查询,分页,等知识。

  • 相关阅读:
    vscode配置c/c++环境
    protobuf简单示例
    heapq.merge()高效合并有序序列
    TCP Server and Client Demo
    golang泛型简介
    context讲解
    go语言range语句中的值的坑
    deque双端队列
    泛型函数
    反射
  • 原文地址:https://www.cnblogs.com/yisuowushinian/p/2714238.html
Copyright © 2020-2023  润新知