分頁預存程序 + C#後台代碼

來源:互聯網
上載者:User

標籤:des   io   os   ar   sp   cti   代碼   log   on   


ALTER proc [dbo].[p_page](
@tableName varchar(8000),--必須
@selectFields varchar(8000)=‘*‘,
@andWhere varchar(4000),--不帶where ,唯寫條件如 and 1=1
@orderByFields varchar(100),--必須 row_number() over(order by)用
@pageIndex int=1,
@pageSize int=20,
@totalCount int=0 output,
@orderType varchar(5)=‘asc‘,--desc,asc
@sql nvarchar(4000) output--返回當前執行的sql語句
)as
begin
if @selectFields=‘‘ or @selectFields is null set @selectFields=‘*‘;
if @pageIndex<=0 set @pageIndex=1;
if @pageSize<=1 set @pageSize=1;

set @sql= N‘select @totalCount=count(*) from ‘+ @tableName +‘ where 1=1 ‘+ @andWhere;
EXEC sp_executesql @sql,N‘@totalCount int OUTPUT‘,@totalCount OUTPUT ;

set @sql=N‘select * from (select row_number() over(order by ‘[email protected]+‘ ‘[email protected]+‘) rowNumerId,‘[email protected]+
‘ from ‘[email protected]+‘ where 1=1 ‘[email protected]+‘) T where rowNumerId>‘+convert(nvarchar(10),(@pageIndex-1)*@pageSize)+‘ and rowNumerId<=‘+convert(nvarchar(10),@pageIndex*@pageSize);
exec (@sql);
end


public static DataTable GetPagedData(string tableName, string selectFields, string andWhere, string orderByFields, int pageIndex, int pageSize, out int totalRows, string orderByType, out string getSelectSql)
{
DataTable dt = new DataTable();
totalRows = 0;
getSelectSql = string.Empty;
try
{
if (string.IsNullOrEmpty(tableName) || string.IsNullOrEmpty(orderByFields))
{
return dt;
}
pageIndex = pageIndex > 0 ? pageIndex : 1;
pageSize = pageSize > 0 ? pageSize : 1;
orderByType = ((orderByType.ToLower().Trim() == "asc") || (orderByType.ToLower().Trim() == "desc")) ? orderByType : "asc";
selectFields = string.IsNullOrEmpty(selectFields) ? "*" : selectFields;
using (SqlConnection conn = new SqlConnection(connectionString))
{
using (SqlDataAdapter da = new SqlDataAdapter("p_page", conn))
{
da.SelectCommand.CommandType = CommandType.StoredProcedure;
da.SelectCommand.Parameters.AddWithValue("@tableName", tableName);
da.SelectCommand.Parameters.AddWithValue("@orderByFields", orderByFields);
da.SelectCommand.Parameters.AddWithValue("@selectFields", selectFields);
da.SelectCommand.Parameters.AddWithValue("@andWhere", andWhere);
da.SelectCommand.Parameters.AddWithValue("@pageIndex", pageIndex);
da.SelectCommand.Parameters.AddWithValue("@pageSize", pageSize);
da.SelectCommand.Parameters.AddWithValue("@totalCount", totalRows).Direction = ParameterDirection.Output;
da.SelectCommand.Parameters.AddWithValue("@orderType", orderByType);
//da.SelectCommand.Parameters.AddWithValue("@distinct", useDistinct ? 1 : 0);
da.SelectCommand.Parameters.Add("@sql", SqlDbType.NVarChar, 4000).Direction = ParameterDirection.Output;
da.Fill(dt);
getSelectSql = da.SelectCommand.Parameters["@sql"].Value.ToString();
totalRows = (int)da.SelectCommand.Parameters["@totalCount"].Value;
}

}
}
catch (System.Data.SqlClient.SqlException e)
{
ESHD.Command.LsgLog.AddError(e, tableName + "selectFields");
}
return dt;
}

分頁預存程序 + C#後台代碼

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.