zoukankan      html  css  js  c++  java
  • 网络工作室暑假后第二次培训资料(SQLServer存储过程和ADO.NET访问存储过程)整理(二) 分类: ASP.NET MSSQLServer 20121007 16:47 665人阅读 评论(0) 收藏

    使用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的表连接查询,多表查询,分页,等知识。

    版权声明:本文为博主原创文章,未经博主允许不得转载。

  • 相关阅读:
    GNOME3启动时出错:Oh no! Something has gone wrong.Logout!
    设计模式之迭代器模式
    C#中多线程 委托的使用
    python的memcache使用如果对key设置了一个int型
    Linux select TCP并发服务器与客户端编程
    G++ 教程(转)
    汉语-词语:卓识
    汉语-词语:决断
    汉语-词语:远见
    汉语-词语:胆识
  • 原文地址:https://www.cnblogs.com/yisuowushinian/p/4715645.html
Copyright © 2011-2022 走看看