一个数据库分页的例子

        private const string SQL_SEARCH_COUNT = "SELECT COUNT(*) AS COUNT FROM [WSE_CompanyCertificate] WHERE ( 1 = 1 ) ";
        private const string SQL_SEARCH_IN = @"
SELECT [ID]
,( ROW_NUMBER() OVER (ORDER BY [UserID] , [Type] , [OrderNumber] ) -1 ) AS RowNumber
FROM [WSE_CompanyCertificate]
WHERE (1=1)";

        private const string SQL_SEARCH_OUT = @"
WITH OrderedTable AS ({0})
SELECT n.*
FROM OrderedTable o LEFT OUTER JOIN
      [WSE_CompanyCertificate] n ON o.[ID] = n.[ID]
 WHERE o.[RowNumber] BETWEEN @PageLower AND @PageUpper
ORDER BY o.RowNumber
";

        private const string SQL_SEARCH_USER_ID = " AND ( [UserID] = @UserID ) ";
        private const string SQL_SEARCH_Type = " AND ( [Type] = @Type ) ";
        private const string SQL_SEARCH_VALIDATE = " AND ( [validate] = @validate) ";

        [Microsoft.SqlServer.Server.SqlProcedure(Name = "WSE_COMPANY_CERTIFICATE_SEARCH_3")]
        public static void Search(out int AllCount, int PageIndex, int PageSize,
            int UserID, int Type, int validate)
        {
            DateTime dtStart = DateTime.Now;

            using (SqlConnection cn = new SqlConnection(SqlConn.SQL_CON))
            {
                cn.Open();
                SqlCommand cmdCount = new SqlCommand();
                SqlCommand cmdSearch = new SqlCommand();
                cmdCount.Connection = cn;
                cmdSearch.Connection = cn;

                string strWhere = "";
                if (UserID > 0)
                {
                    strWhere += SQL_SEARCH_USER_ID;

                    cmdSearch.Parameters.AddWithValue(PARM_USER_ID, UserID);
                    cmdCount.Parameters.AddWithValue(PARM_USER_ID, UserID);
                }
                if (Type == 0 || Type == 1)
                {
                    strWhere += SQL_SEARCH_Type;

                    cmdSearch.Parameters.AddWithValue(PARM_TYPE,Type);
                    cmdCount.Parameters.AddWithValue(PARM_TYPE,Type);
                }
                if (validate == -1 || validate == 0 || validate == 1)
                {
                    strWhere += SQL_SEARCH_VALIDATE;

                    cmdSearch.Parameters.AddWithValue(PARM_VALIDATE, validate);
                    cmdCount.Parameters.AddWithValue(PARM_VALIDATE, validate);
                }

                string strSQL = SQL_SEARCH_COUNT + strWhere;
               
                cmdCount.CommandText = strSQL;
                DBUtility.WriteSQL(cmdCount);
                AllCount = Convert.ToInt32(cmdCount.ExecuteScalar());

                strSQL = SQL_SEARCH_IN + strWhere;
                strSQL = string.Format(SQL_SEARCH_OUT, strSQL);
               
                cmdSearch.CommandText = strSQL;

                int intPageLower = PageSize * PageIndex;               
                int intPageUpper = intPageLower + PageSize - 1;
                cmdSearch.Parameters.AddWithValue(Constant.PARM_PAGE_UPPER, intPageUpper);
                cmdSearch.Parameters.AddWithValue(Constant.PARM_PAGE_LOWER, intPageLower);
                DBUtility.WriteSQL(cmdSearch);
                SqlContext.Pipe.ExecuteAndSend(cmdSearch);
            }
            TimeSpan ts = DateTime.Now - dtStart;
            SqlContext.Pipe.Send(string.Format("{0}:{1}", ts.Seconds, ts.Milliseconds));
        } 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值