最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SQL通用存儲過程分頁,支持多表聯(lián)合

 更新時間:2011年11月01日 20:57:09   作者:  
以前用.net寫分頁存儲過程時老是一張表就要寫一個procedure.很忙煩.后來有空就整合了一下,做了一個通用的sql分頁存儲,支持多表聯(lián)合查詢分頁.寫的不好的地方,希望大鳥們多多指導.使的查詢速度更快.
SQLPager存儲過程
復制代碼 代碼如下:

ALTER proc [dbo].[SqlPager]
(
@tblName varchar(255), -- 表名(注意:可以多表鏈接)
@strGetFields varchar(1000) = '*', -- 需要返回的列
@OrderfldName varchar(255)='', -- 排序的字段名
@PageSize int = 10, -- 頁尺寸
@PageIndex int = 1, -- 頁碼
@doCount int = 1 output, --查詢到的記錄數(shù)
@OrderType bit = 0, -- 設(shè)置排序類型, 非 0 值則降序
@strWhere varchar(500) = '' -- 查詢條件 (注意: 不要加 where)
)
AS
declare @strSQL nvarchar(4000) -- 主語句
declare @strTmp varchar(110) -- 臨時變量
declare @strOrder varchar(300) -- 排序類型

if @strWhere != ''
set @strSQL = 'select @doCount=count(*) from ' + @tblName + ' where '+@strWhere
else
set @strSQL = 'select @doCount=count(*) from ' + @tblName
exec sp_executesql @strSQL,N'@doCount int out',@doCount out
--以上代碼的意思是如果@doCount傳遞過來的不是0,就執(zhí)行總數(shù)統(tǒng)計。以下的所有代碼都是@doCount為0的情況
set @strSQL='';

if @OrderType != 0
begin
set @strTmp = '<(select min'
set @strOrder = ' order by [' + @OrderfldName +'] desc'--如果@OrderType不是0,就執(zhí)行降序,這句很重要!
end
else
begin
set @strTmp = '>(select max'
set @strOrder = ' order by [' + @OrderfldName +'] asc'
end
if @PageIndex = 1
begin
if @strWhere != ''
set @strSQL = 'select top ' + str(@PageSize) +' '+@strGetFields+ ' from ' + @tblName + ' where ' + @strWhere + ' ' + @strOrder
else
set @strSQL = 'select top ' + str(@PageSize) +' '+@strGetFields+ ' from '+ @tblName + ' '+ @strOrder--如果是第一頁就執(zhí)行以上代碼,這樣會加快執(zhí)行速度
end
else
begin--以下代碼賦予了@strSQL以真正執(zhí)行的SQL代碼
set @strSQL = 'select top ' + str(@PageSize) +' '+@strGetFields+ ' from '
+ @tblName + ' where [' + @OrderfldName + ']' + @strTmp + '(['+ @OrderfldName + ']) from (select top ' + str((@PageIndex-1)*@PageSize) + ' ['+ @OrderfldName + '] from ' + @tblName + ' ' + @strOrder + ') as tblTmp)'+ @strOrder
if @strWhere != ''
set @strSQL = 'select top ' + str(@PageSize) +' '+@strGetFields+ ' from '
+ @tblName + ' where [' + @OrderfldName + ']' + @strTmp + '(['
+ @OrderfldName + ']) from (select top ' + str((@PageIndex-1)*@PageSize) + ' ['
+ @OrderfldName + '] from ' + @tblName + ' where ' + @strWhere + ' '
+ @strOrder + ') as tblTmp) and ' + @strWhere + ' ' + @strOrder
end
exec (@strSQL)

SQLHelper類中寫執(zhí)行存儲過程 這是我的數(shù)據(jù)庫操作類.方法有點老,還是三層架構(gòu).(mvc也應(yīng)該差不多.我還木有試試.)
復制代碼 代碼如下:

/// <summary>
/// 分頁(存儲過程) 用法例如下:
/// </summary>
/// <param>表名(注意:可以多表鏈接)</param>
/// <param>需要返回的列</param>
/// <param>主鍵</param>
/// <param>排序的字段名</param>
/// <param>頁尺寸</param>
/// <param>頁碼</param>
/// <param>查詢到的記錄數(shù)</param>
/// <param>設(shè)置排序類型, desc、asc</param>
/// <param>查詢條件 (注意: 不要加 where)</param>
/// <returns></returns>
public static DataTable DbPager(
string tblName,
string strGetFields,
string PkeyfldName,
string OrderfldName,
int PageSize,
int PageIndex,
out int doCount,
string OrderType,
string strWhere)
{
SqlConnection con = new SqlConnection(ConnString.Value);
SqlDataAdapter da = new SqlDataAdapter("DbPager", con);
da.SelectCommand.CommandType = CommandType.StoredProcedure;
da.SelectCommand.Parameters.Add(new SqlParameter("@tblName", tblName));
da.SelectCommand.Parameters.Add(new SqlParameter("@strGetFields", strGetFields));
da.SelectCommand.Parameters.Add(new SqlParameter("@PkeyfldName", PkeyfldName));
da.SelectCommand.Parameters.Add(new SqlParameter("@OrderfldName", OrderfldName));
da.SelectCommand.Parameters.Add(new SqlParameter("@PageSize", PageSize));
da.SelectCommand.Parameters.Add(new SqlParameter("@PageIndex", PageIndex));
da.SelectCommand.Parameters.Add("@doCount", SqlDbType.Int);
da.SelectCommand.Parameters["@doCount"].Direction = ParameterDirection.Output;
da.SelectCommand.Parameters.Add(new SqlParameter("@OrderType", OrderType));
da.SelectCommand.Parameters.Add(new SqlParameter("@strWhere", strWhere));
DataSet ds = new DataSet();
da.Fill(ds);
doCount = Convert.ToInt32(da.SelectCommand.Parameters["@doCount"].Value);
return ds.Tables[0];
}

相關(guān)文章

  • .NET?6開發(fā)TodoList應(yīng)用之請求日志組件HttpLogging介紹

    .NET?6開發(fā)TodoList應(yīng)用之請求日志組件HttpLogging介紹

    這篇文章介紹了.NET?6開發(fā)TodoList應(yīng)用之請求日志組件HttpLogging,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-01-01
  • ASP.NET MVC從視圖傳參到控制器的幾種形式

    ASP.NET MVC從視圖傳參到控制器的幾種形式

    這篇文章主要介紹了ASP.NET MVC從視圖傳參到控制器的幾種形式,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2017-04-04
  • ASP.NET對大文件上傳的解決方案

    ASP.NET對大文件上傳的解決方案

    在ASP.NET 開發(fā)的過程中,最大的問題就在于上傳大文件時讓開發(fā)者尤為的頭疼,而且,上傳時無法方便的做到多線程的操控和上傳進度的顯示。筆者在此給大家推薦一款簡單易用的上傳組件,從而快速便捷得解決了 ASP.NET 中的大文件上傳問題
    2015-08-08
  • .Net Core 中選項Options的具體實現(xiàn)

    .Net Core 中選項Options的具體實現(xiàn)

    這篇文章主要介紹了.Net Core 中選項Options的具體實現(xiàn),文中運用大量代碼對相關(guān)知識詳細介紹,感興趣的小伙伴可以參考一下這篇文章,希望對你有所幫助
    2021-09-09
  • asp.net core 使用 TestServer 來做集成測試的方法

    asp.net core 使用 TestServer 來做集成測試的方法

    這篇文章主要介紹了asp.net core 使用 TestServer 來做集成測試,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-11-11
  • System.Web.Routing入門及進階

    System.Web.Routing入門及進階

    上面介紹的是最簡單的一種定義方式。當然我們可以建立更復雜的規(guī)則。其中就包括設(shè)定規(guī)則的默認值以及設(shè)定規(guī)則的正則表達式
    2011-12-12
  • .NetCore使用ImageSharp進行圖片的生成

    .NetCore使用ImageSharp進行圖片的生成

    ImageSharp是對NetCore平臺擴展的一個圖像處理方案,以往網(wǎng)上的案例多以生成文字及畫出簡單圖形、驗證碼等方式進行探討和實踐,今天我分享一下所在公司項目的實際應(yīng)用案例,導出微信二維碼圖片,圓形頭像,感興趣的朋友一起看看吧
    2022-06-06
  • ASP.NET?MVC遍歷驗證ModelState的錯誤信息

    ASP.NET?MVC遍歷驗證ModelState的錯誤信息

    這篇文章介紹了ASP.NET?MVC遍歷ModelState錯誤信息的方法,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-09-09
  • Asp.NET頁面中事件加載的先后順序詳解

    Asp.NET頁面中事件加載的先后順序詳解

    這篇文章主要給大家介紹了關(guān)于Asp.NET頁面中事件加載的先后順序,文中通過圖文以及示例代碼介紹的非常詳細,對大家具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧。
    2017-08-08
  • 建立自己的RSS

    建立自己的RSS

    建立自己的RSS...
    2006-09-09

最新評論

沙雅县| 酉阳| 佳木斯市| 彭阳县| 富锦市| 柘荣县| 商河县| 渝中区| 曲阳县| 伊宁市| 江津市| 广水市| 鹤岗市| 庄浪县| 当阳市| 古交市| 威信县| 宁远县| 长春市| 论坛| 增城市| 星子县| 永济市| 静宁县| 巩义市| 巍山| 辰溪县| 突泉县| 湘阴县| 大港区| 灵宝市| 伊宁市| 嘉兴市| 那坡县| 长治县| 将乐县| 金沙县| 浦东新区| 云阳县| 阿城市| 东兴市|