C#SQL SERVER分页

时间:2025-03-27 14:41:03
public static DataSet GetPageList(string selectCommandText, List<SqlParameter> paramList, int pageSize, int pageIndex, string filedOrder, out string recordTotal)
{
    using (SqlConnection connection = new SqlConnection(connectionString))
    {
        try
        {
            StringBuilder SQLString = new StringBuilder();
            (@"
            BEGIN
                DECLARE @beginRow INT;
                DECLARE @endRow INT;

                SET NOCOUNT ON

                SET @beginRow = (@pageIndex - 1) * @pageSize + 1;
                SET @endRow = @pageIndex * @pageSize;

                --输出参数为总记录数
                SELECT @recordTotal = COUNT(1) FROM ("+ @selectCommandText + @") AS my_temp;

                --主查询返回结果集
                SELECT * FROM (SELECT ROW_NUMBER() OVER (order by @orderString) AS rows ,* FROM (" + @selectCommandText + @") AS A) AS main_temp 
                WHERE rows BETWEEN CAST(@beginRow AS VARCHAR) AND CAST(@endRow AS VARCHAR);
                SET NOCOUNT OFF
            END");
            ();
            SqlCommand cmd = new SqlCommand((), connection);
            if (paramList != null &&  > 0)
            {
                foreach (SqlParameter param in paramList)
                {
                    if (( ==  ||  == ) &&
                    ( == null))
                    {
                         = ;
                    }
                    (param);
                }
            }
            recordTotal = "0";
            (new SqlParameter("@recordTotal", , 8) { Value = (recordTotal), Direction =  });
            (new SqlParameter("@pageSize", , 8) { Value = pageSize });
            (new SqlParameter("@pageIndex", , 8) { Value = pageIndex });
            (new SqlParameter("@orderString", , 1000) { Value = filedOrder });
            SqlDataAdapter sqlDA = new SqlDataAdapter();
             = cmd;
            DataSet ds = new DataSet();
            (ds);
            recordTotal = ["@recordTotal"].Value !=  ? ["@recordTotal"].() : "0";
            ();
            ();
            return ds;
        }
        catch (Exception ex)
        {
            throw ex;
        }
    }
}