zoukankan      html  css  js  c++  java
  • C#学习-执行存储过程

    使用存储的优点

    1.执行更快。直接写sql脚本会有个解析编译的过程。

    2.修改方便。当业务改变时,只需要改存储过程,不需要修改C#代码

    3.传递Sql脚本数据相对更小

    缺点:

    1.使用存储过程,数据库移植性差

    2.把业务放到了存储过程里,相当于把处理业务的压力放到了数据库里面。

    存储过程的脚本:

    --分页原理:越过多少条,取多少条
    --创建一个存储过程
    create proc P_LoadPageData
        --参数
        @pageIndex int,
        @pageSize int,
        @total int out
    as
    select top(@pageSize) * from QunList where id not in
    (
        select top((@pageIndex-1)*@pageSize) id from QunList order by id
    )
    order by id
    select @total=count('a') from QunList
    select @total
    
    --执行存储过程
    declare @total int
    exec P_LoadPageData 2,5,@total out
    select @total

    C#中代码

    //如果用了输出参数,那么就用SQLDataAdapter就可以了,用SQLDataReader会拿不到输出参数
    string connstr = ConfigurationManager.ConnectionStrings["connStr"].ConnectionString;
    //创建一个DateSet,用来保存查询出的数据
    //可以把DataSet比作数据库;把DataSet.Table比作数据库中的表
    DataSet ds=new DataSet();
    //设置输出参数
    SqlParameter totalParameter=new SqlParameter("@total",SqlDbType.Int);
    totalParameter.Direction = ParameterDirection.Output;
    using (SqlConnection conn = new SqlConnection(connstr))
    {
        conn.Open();
        using (SqlDataAdapter adapter = new SqlDataAdapter("P_LoadPageData", conn))
        {
            //设置为存储过程
            adapter.SelectCommand.CommandType = CommandType.StoredProcedure;
            adapter.SelectCommand.Parameters.Add(new SqlParameter("@pageIndex", 5));
            adapter.SelectCommand.Parameters.Add(new SqlParameter("@pageSize", 7));
            //输出参数的用法
            adapter.SelectCommand.Parameters.Add(totalParameter);
            adapter.Fill(ds);
        }
    }
    //取得输出参数的值
    int total = (int) totalParameter.Value;
    var table = ds.Tables[0];
    更多精彩内容请看:http://www.cnblogs.com/2star
  • 相关阅读:
    华为S12700 NQA配置
    斐讯K1 K2 开启Telnet
    存储的一些基本概念(HBA,LUN)
    华为AR配置内部服务器示例(只有1个公网IP)
    使用nginx 做kbmmw REST 服务的负载均衡
    第一个 macOS 64位 kbmmw 服务器
    使用FMXlinux 开发linux 桌面应用
    推荐一套免费跨平台的delphi 哈希及加密算法库
    使用kbmmw 的调度事件动态显示时间
    提高sqlite 的运行性能(转载)
  • 原文地址:https://www.cnblogs.com/kimisme/p/4360718.html
Copyright © 2011-2022 走看看