关闭 x
IT技术网
    技 采 号
    ITJS.cn - 技术改变世界
    • 实用工具
    • 菜鸟教程
    IT采购网 中国存储网 科技号 CIO智库

    IT技术网

    IT采购网
    • 首页
    • 行业资讯
    • 系统运维
      • 操作系统
        • Windows
        • Linux
        • Mac OS
      • 数据库
        • MySQL
        • Oracle
        • SQL Server
      • 网站建设
    • 人工智能
    • 半导体芯片
    • 笔记本电脑
    • 智能手机
    • 智能汽车
    • 编程语言
    IT技术网 - ITJS.CN
    首页 » 网站维护 »通用SQL存储过程分页以及asp.net后台调用

    通用SQL存储过程分页以及asp.net后台调用

    2015-09-10 00:00:00 出处:ITJS
    分享

    创建表格并添加300万数据

    use Stored CREATE TABLE UserInfo(  --创建表 id int  IDENTITY(1,1) PRIMARY KEY not null,--添加主键和标识列 UserName varchar(50)  )   declare @i int  --添加3百万数据,大概4分钟时间 set @i=1 while @i<3000000 begin insert into UserInfo (UserName) values(@i) set @i=@i+1 end 

    存储过程T-SQL

    USE [Stored] GO /****** Object:  StoredProcedure [dbo].[GetDataList]    Script Date: 08/17/2015 16:40:21 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO ALTER  PROCEDURE [dbo].[GetDataList] (  @TableName  varchar(5000),       --表名  @Fields varchar(5000) = '*',     --字段名(全部字段为*)  @OrderField varchar(5000),       --排序字段(必须!支持多字段)  @OrderType varchar(5000),        --排序类型  @sqlWhere varchar(5000) = Null,  --条件语句(不用加where)  @pageSize int,                   --每页多少条记录  @pageIndex int = 1 ,             --指定当前为第几页  @TotalPage int output,           --返回总页数   @totalRecord int output       --计算总记录数              --返回总记录数  ) as begin    Begin Tran --开始事务    Declare @sql nvarchar(4000);          Declare   @sql nvarchar(500)=''       if (@SqlWhere='' or @sqlWhere=NULL)         set @sql = 'select @totalRecord = count(*) from ' + @TableName     else         set @sql = 'select @totalRecord = count(*) from ' + @TableName + ' where ' + @sqlWhere               EXEC sp_executesql @sql,N'@totalRecord int OUTPUT',@totalRecord OUTPUT--计算总记录数                             --计算总页数     select @TotalPage=CEILING((@totalRecord+0.0)/@PageSize)    if (@SqlWhere='' or @sqlWhere=NULL)         set @sql = 'Select * FROM (select ROW_NUMBER() Over(order by ' + @OrderField +' ' + @Ordertype+' ) as rowId,' + @Fields + ' from ' + @TableName      else         set @sql = 'Select * FROM (select ROW_NUMBER() Over(order by ' + @OrderField +' ' + @Ordertype+'  ) as rowId,' + @Fields + ' from ' + @TableName + ' where ' + @SqlWhere      --处理页数超出范围情况     if @PageIndex<=0          Set @pageIndex = 1          if @pageIndex>@TotalPage         Set @pageIndex = @TotalPage     --处理开始点和结束点     Declare @StartRecord int     Declare @EndRecord int          set @StartRecord = (@pageIndex-1)*@PageSize + 1     set @EndRecord = @StartRecord + @pageSize - 1    --继续合成sql语句     set @Sql = @Sql + ') as ' + @TableName + ' where rowid between ' + Convert(varchar(50),@StartRecord) + ' and ' +  Convert(varchar(50),@EndRecord)      --print @Sql             Exec(@Sql)     ---------------------------------------------------     If @@Error <> 0       Begin         RollBack Tran         Return -1       End      Else       Begin         Commit Tran         Return @totalRecord ---返回记录总数       End     end  --exec GetDataList 'Userinfo','*','id','desc','',10,1,3,3000000 

    前台页面Default2.aspx

    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default2.aspx.cs" Inherits="Default2" %>  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server">     <title></title> </head> <body>     <form id="form1" runat="server">     <div>      <asp:GridView ID="GridView1" runat="server">         </asp:GridView>        <asp:Label ID="lbl_page" runat="server" Text="Label"></asp:Label>     </div>     </form> </body> </html> 

    后台CS代码Default2.aspx.cs

    using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Data; using System.Data.SqlClient; using System.Configuration; using System.Text;   public partial class Default2 : System.Web.UI.Page {        private int PageIndex = 0;//当前页码     private int PageSize = 50;//每页几条记录     private int TotalPage = 1;//总分页数     private int TotalRecord = 0;//总记录     private string OrderType = " desc";//排序方式 默认正序     protected void Page_Load(object sender, EventArgs e)     {         if (!IsPostBack)         {             GetParams();             DataSet ds = PageData("UserInfo", "*", "id", OrderType, "", PageSize, PageIndex, out TotalPage, out TotalRecord);             GridView1.DataSource = ds;             GridView1.DataBind();             lbl_page.Text = GetDivPager("", ds);         }     }      //数据库连接字符     public static string StrConn()     {         //return string.Format("{0}","server=.;database=Stored;user=sa;password=123456");         return ConfigurationSettings.AppSettings["ConnString"].ToString();     }     //Get方式获得下一页     private void GetParams()     {         if (!String.IsNullOrEmpty(Request["page"]))         {             PageIndex = Convert.ToInt32(Request["Page"]);         }         else         {             PageIndex = 1;         }     }     #region 获得分页字符     public string GetDivPager(string queryString, DataSet ds)     {         StringBuilder sp = new StringBuilder();         int TotalCount = TotalRecord;         int rowCount = TotalPage;         if (ds != null)         {             sp.AppendFormat("  <p>总记录:<span id="sum">{0}</span>", TotalCount);             sp.AppendFormat("  页码:<em><b id="current">{0}</b>/<span id="count">{1}</span></em> ", PageIndex, rowCount);             sp.AppendFormat("  每页:<span id="eachPage">{0}</span></p> ", PageSize);                          sp.AppendFormat("  <a  href='{0}'>首页</a> ", " page=1" + queryString);             if (PageIndex > 1)             {                 sp.AppendFormat("  <a href='{0}'>< 上一页 </a>", " page=" + (PageIndex - 1) + queryString);             }             int temp = 0;             int loopc = rowCount > 10   10 : rowCount;             for (int i = 0; i < loopc; i++)             {                 temp = i + 1;                 if (PageIndex > 10) { temp = (PageIndex - 10) + i + 1; }                 sp.AppendFormat("  <a class="{0}" href='{1}'>{2}</a>", PageIndex == temp   "active" : "", " page=" + temp + queryString, temp);             }             if (PageIndex != rowCount)             {                 sp.AppendFormat("  <a href='{0}'>下一页 ></a>", " page=" + (PageIndex + 1) + queryString);             }             sp.AppendFormat("  <a href='{0}'>尾页</a>", " page=" + rowCount + queryString);                    }         else         {             ds = null;         }         return sp.ToString();     }     #endregion     #region 获取分页的数据     /// <summary>     /// 获取分页的数据     /// </summary>     /// <param name="TblName">数据表名</param>     /// <param name="Fields">要读取的字段</param>     /// <param name="OrderField">排序字段</param>     /// <param name="OrderType">排序方式</param>     /// <param name="SqlWhere">查询条件</param>     /// <param name="PageSize">每页显示多少条数据</param>     /// <param name="pageIndex">当前页码</param>     /// <param name="TotalPage">返回值,共有多少页</param>     /// <param name="TotalRecord">返回值,总有多少条记录</param>     /// <returns></returns>     public static DataSet PageData(string TblName, string Fields, string OrderField, string OrderType, string SqlWhere, int PageSize, int pageIndex, out int TotalPage, out int TotalRecord)     {          SqlConnection conn = new SqlConnection(StrConn());         SqlCommand comm = new SqlCommand("GetDataList", conn);          comm.Parameters.Add(new SqlParameter("@TableName", SqlDbType.NVarChar, 100)).Value = TblName;         comm.Parameters.Add(new SqlParameter("@Fields", SqlDbType.NVarChar, 1000)).Value = Fields;         comm.Parameters.Add(new SqlParameter("@OrderField", SqlDbType.NVarChar, 1000)).Value = OrderField;         comm.Parameters.Add(new SqlParameter("@OrderType", SqlDbType.NVarChar, 1000)).Value = OrderType;         comm.Parameters.Add(new SqlParameter("@sqlWhere", SqlDbType.NVarChar, 1000)).Value = SqlWhere;         comm.Parameters.Add(new SqlParameter("@pageSize", SqlDbType.Int)).Value = PageSize;         comm.Parameters.Add(new SqlParameter("@pageIndex", SqlDbType.Int)).Value = pageIndex;         comm.Parameters.Add(new SqlParameter("@TotalPage", SqlDbType.Int));          comm.Parameters["@TotalPage"].Direction = ParameterDirection.Output;//获得out出来的参数值          comm.Parameters.Add(new SqlParameter("@totalRecord", SqlDbType.Int));         comm.Parameters["@totalRecord"].Direction = ParameterDirection.Output;          comm.CommandType = CommandType.StoredProcedure;          SqlDataAdapter dataAdapter = new SqlDataAdapter(comm);         DataSet ds = new DataSet();         dataAdapter.Fill(ds);          TotalPage = (int)comm.Parameters["@TotalPage"].Value;         TotalRecord = (int)comm.Parameters["@totalRecord"].Value;          conn.Close();         conn.Dispose();         comm.Dispose();                  return ds;     }     #endregion } 

    上一篇返回首页 下一篇

    声明: 此文观点不代表本站立场;转载务必保留本文链接;版权疑问请联系我们。

    别人在看

    正版 Windows 11产品密钥怎么查找/查看?

    还有3个月,微软将停止 Windows 10 的更新

    Windows 10 终止支持后,企业为何要立即升级?

    Windows 10 将于 2025年10 月终止技术支持,建议迁移到 Windows 11

    Windows 12 发布推迟,微软正全力筹备Windows 11 25H2更新

    Linux 退出 mail的命令是什么

    Linux 提醒 No space left on device,但我的空间看起来还有不少空余呢

    hiberfil.sys文件可以删除吗?了解该文件并手把手教你删除C盘的hiberfil.sys文件

    Window 10和 Windows 11哪个好?答案是:看你自己的需求

    盗版软件成公司里的“隐形炸弹”?老板们的“法务噩梦” 有救了!

    IT头条

    公安部:我国在售汽车搭载的“智驾”系统都不具备“自动驾驶”功能

    02:03

    液冷服务器概念股走强,博汇、润泽等液冷概念股票大涨

    01:17

    亚太地区的 AI 驱动型医疗保健:2025 年及以后的下一步是什么?

    16:30

    智能手机市场风云:iPhone领跑销量榜,华为缺席引争议

    15:43

    大数据算法和“老师傅”经验叠加 智慧化收储粮食尽显“科技范”

    15:17

    技术热点

    商业智能成CIO优先关注点 技术落地方显成效(1)

    用linux安装MySQL时产生问题破解

    JAVA中关于Map的九大问题

    windows 7旗舰版无法使用远程登录如何开启telnet服务

    Android View 事件分发机制详解

    MySQL用户变量的用法

      友情链接:
    • IT采购网
    • 科技号
    • 中国存储网
    • 存储网
    • 半导体联盟
    • 医疗软件网
    • 软件中国
    • ITbrand
    • 采购中国
    • CIO智库
    • 考研题库
    • 法务网
    • AI工具网
    • 电子芯片网
    • 安全库
    • 隐私保护
    • 版权申明
    • 联系我们
    IT技术网 版权所有 © 2020-2025,京ICP备14047533号-20,Power by OK设计网

    在上方输入关键词后,回车键 开始搜索。Esc键 取消该搜索窗口。