亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 數據庫 > SQL Server > 正文

淺談mssql access數據庫 top分頁方法

2024-08-31 01:00:35
字體:
來源:轉載
供稿:網友

但是有利也有弊,它要求排序字段必須構成唯一記錄,且select后的字段列表中,不允許出現與排序字段同名的字段。
雖然sql2k5及以上版本已經提供了rownum()來進行分頁處理,但是使用sql2k進行開發的還是較多的

復制代碼 代碼如下:


uusing system.collections.generic;
sing system;
using system.text;
/// <summary>
/// 構造分頁后的sql語句
/// </summary>
public static class paginghelper
{
    /// <summary>
    /// 獲取分頁sql語句,排序字段需要構成唯一記錄
    /// </summary>
    /// <param>記錄總數</param>
    /// <param>每頁記錄數</param>
    /// <param>當前頁數</param>
    /// <param>sql查詢語句</param>
    /// <param>排序字段,多個則用“,”隔開</param>
    /// <returns>分頁sql語句</returns>
    public static string createpagingsql(int _recordcount, int _pagesize, int _pageindex, string _safesql, string _orderfield)
    {
        //重新組合排序字段,防止有錯誤
        string[] arrstrorders = _orderfield.split(new char[] { ',' }, stringsplitoptions.removeemptyentries);
        stringbuilder sboriginalorder = new stringbuilder(); //原排序字段
        stringbuilder sbreverseo教程rder = new stringbuilder(); //與原排序字段相反,用于分頁
        for (int i = 0; i < arrstrorders.length; i++)
        {
            arrstrorders[i] = arrstrorders[i].trim();  //去除前后空格
            if (i != 0)
            {
                sboriginalorder.append(", ");
                sbreverseorder.append(", ");
            }
            sboriginalorder.append(arrstrorders[i]);

            int index = arrstrorders[i].indexof(" "); //判斷是否有升降標識
            if (index > 0)
            {
                //替換升降標識,分頁所需
                bool flag = arrstrorders[i].indexof(" desc", stringcomparison.ordinalignorecase) != -1;
                sbreverseorder.appendformat("{0} {1}", arrstrorders[i].remove(index), flag ? "asc" : "desc");
            }
            else
            {
                sbreverseorder.appendformat("{0} desc", arrstrorders[i]);
            }
        }

        //計算總頁數
        _pagesize = _pagesize == 0 ? _recordcount : _pagesize;
        int pagecount = (_recordcount + _pagesize - 1) / _pagesize;

        //檢查當前頁數
        if (_pageindex < 1)
        {
            _pageindex = 1;
        }
        else if (_pageindex > pagecount)
        {
            _pageindex = pagecount;
        }

        stringbuilder sbsql = new stringbuilder();
        //第一頁時,直接使用top n,而不進行分頁查詢
        if (_pageindex == 1)
        {
            sbsql.appendformat(" select top {0} * ", _pagesize);
            sbsql.appendformat(" from ({0}) as t ", _safesql);
            sbsql.appendformat(" order by {0} ", sboriginalorder.tostring());
        }
        //最后一頁時,減少一個top n
        else if (_pageindex == pagecount)
        {
            sbsql.append(" select * from ");
            sbsql.append(" ( ");
            sbsql.appendformat(" select top {0} * ", _recordcount - _pagesize * (_pageindex - 1));
            sbsql.appendformat(" from ({0}) as t ", _safesql);
            sbsql.appendformat(" order by {0} ", sbreverseorder.tostring());
            sbsql.append(" ) as t ");
            sbsql.appendformat(" order by {0} ", sboriginalorder.tostring());
        }
        //前半頁數時的分頁
        else if (_pageindex < (pagecount / 2 + pagecount % 2))
        {
            sbsql.append(" select * from ");
            sbsql.append(" ( ");
            sbsql.appendformat(" select top {0} * from ", _pagesize);
            sbsql.append(" ( ");
            sbsql.appendformat(" select top {0} * ", _pagesize * _pageindex);
            sbsql.appendformat(" from ({0}) as t ", _safesql);
            sbsql.appendformat(" order by {0} ", sboriginalorder.tostring());
            sbsql.append(" ) as t ");
            sbsql.appendformat(" order by {0} ", sbreverseorder.tostring());
            sbsql.append(" ) as t ");
            sbsql.appendformat(" order by {0} ", sboriginalorder.tostring());
        }
        //后半頁數時的分頁
        else
        {
            sbsql.appendformat(" select top {0} * from ", _pagesize);
            sbsql.append(" ( ");
            sbsql.appendformat(" select top {0} * ", ((_recordcount % _pagesize) + _pagesize * (pagecount - _pageindex)));
            sbsql.appendformat(" from ({0}) as t ", _safesql);
            sbsql.appendformat(" order by {0} ", sbreverseorder.tostring());
            sbsql.append(" ) as t ");
            sbsql.appendformat(" order by {0} ", sboriginalorder.tostring());
        }

        return sbsql.tostring();
    }

    /// <summary>
    /// 獲取記錄總數sql語句
    /// </summary>
    /// <param>限定記錄數</param>
    /// <param>sql查詢語句</param>
    /// <returns>記錄總數sql語句</returns>
    public static string createtopnsql(int _n, string _safesql)
    {
        return string.format(" select top {0} * from ({1}) as t ", _n, _safesql);
    }

    /// <summary>
    /// 獲取記錄總數sql語句
    /// </summary>
    /// <param>sql查詢語句</param>
    /// <returns>記錄總數sql語句</returns>
    public static string createcountingsql(string _safesql)
    {
        return string.format(" select count(1) as recordcount from ({0}) as t ", _safesql);
    }
}

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
97久久伊人激情网| 欧美日韩在线观看视频小说| 日韩va亚洲va欧洲va国产| 精品中文字幕在线2019| 91精品国产综合久久香蕉最新版| 亚洲福利小视频| 日韩一区二区三区xxxx| 国产精品久久久久7777婷婷| 国产在线拍偷自揄拍精品| 国产v综合v亚洲欧美久久| 国产精品一久久香蕉国产线看观看| 国产精品色悠悠| 国产在线精品播放| 91免费看视频.| 5278欧美一区二区三区| 日韩av一区二区在线观看| 久久久免费观看视频| xxxx性欧美| 欧美乱人伦中文字幕在线| 亚洲一级片在线看| 亚洲国产精品成人精品| 国产精品久久久久久搜索| 欧美一乱一性一交一视频| 国产精品久久久久久久久久免费| 久久夜色撩人精品| 精品亚洲国产成av人片传媒| 91手机视频在线观看| 97免费视频在线播放| 国产在线精品播放| 成人写真视频福利网| 孩xxxx性bbbb欧美| 91在线免费观看网站| 亚洲欧美三级在线| 中文字幕欧美日韩| 国产亚洲欧洲高清| 欧美高清视频在线播放| 视频一区视频二区国产精品| 色婷婷综合久久久久中文字幕1| 色妞一区二区三区| 欧美激情xxxx| 日韩精品欧美国产精品忘忧草| 亚洲一区二区黄| 国产精品免费一区二区三区都可以| 国产成人黄色av| 欧美壮男野外gaytube| 久久久视频精品| 国产午夜精品麻豆| 欧美成人午夜激情| 亚洲第一国产精品| 国产免费观看久久黄| 91中文字幕一区| 精品女厕一区二区三区| 亚洲va男人天堂| 欧美成人精品在线播放| 亚洲free性xxxx护士hd| 上原亚衣av一区二区三区| 久久久久久高潮国产精品视| 亚洲视频综合网| 亚洲tv在线观看| 亚洲美女激情视频| 国产精品无av码在线观看| 久久久最新网址| 国产亚洲欧美日韩精品| 国产+成+人+亚洲欧洲| 国产精品影院在线观看| 日韩精品极品毛片系列视频| 国产精品亚洲片夜色在线| 日韩av中文在线| 日韩精品中文字幕视频在线| 国产999视频| 成人免费激情视频| 久久精品一偷一偷国产| 另类色图亚洲色图| 岛国av一区二区在线在线观看| 久国内精品在线| 欧美激情手机在线视频| 亚洲一区二区三区成人在线视频精品| 欧美激情精品久久久久| 日韩成人性视频| 日韩av资源在线播放| 亚洲色图欧美制服丝袜另类第一页| 大胆欧美人体视频| 38少妇精品导航| 亚洲性av网站| 日韩不卡中文字幕| 欧美亚洲激情在线| 国产成人高潮免费观看精品| 欧美大片在线影院| 色综合久久中文字幕综合网小说| 亚洲综合视频1区| 中文字幕亚洲综合久久筱田步美| 国产精品一区=区| 日韩欧美在线观看| 日韩亚洲在线观看| 亚洲第一页自拍| 欧美大荫蒂xxx| 亚洲精品电影网在线观看| 国产一区二区三区中文| 国产美女91呻吟求| 日韩欧美精品在线观看| 日韩欧美国产黄色| 日韩欧美国产高清91| 91福利视频在线观看| 不卡av在线网站| 日韩在线视频免费观看| 国产精品视频自在线| 国产精品亚洲精品| 最近中文字幕日韩精品| 欧美电影在线观看完整版| 中文字幕久热精品在线视频| 在线国产精品视频| 久久手机精品视频| 91精品久久久久| 亚洲石原莉奈一区二区在线观看| 国产精品一区二区久久精品| 亚洲女人被黑人巨大进入al| 精品视频—区二区三区免费| 日韩av三级在线观看| 成人福利视频在线观看| 91久久在线播放| 亚洲欧美综合图区| 国内精品久久久久久中文字幕| 国产精品久久久久影院日本| 精品亚洲一区二区三区| 国产日韩欧美夫妻视频在线观看| 69av视频在线播放| 国产精品男女猛烈高潮激情| 国产一区在线播放| 亚洲第一在线视频| 欧美高清电影在线看| 日韩在线中文视频| 欧美国产第二页| 国产精品永久免费在线| 亚洲欧洲偷拍精品| 国产成人综合精品在线| 国产精品高潮呻吟久久av野狼| 中文字幕欧美日韩在线| 国产精品高潮呻吟视频| 日韩中文在线中文网在线观看| 国产精品第二页| 欧日韩在线观看| 欧美性xxxxxxxxx| 成人网欧美在线视频| 欧美福利视频在线观看| zzijzzij亚洲日本成熟少妇| 午夜精品久久久久久久99黑人| 久久久噜噜噜久久久| 国产99久久精品一区二区永久免费| 美女视频久久黄| 91色视频在线导航| 日韩中文字幕国产精品| 91高清免费在线观看| 一区国产精品视频| 久久夜精品va视频免费观看| 国产91精品青草社区| 亚洲国产私拍精品国模在线观看| 久久777国产线看观看精品| 日韩激情在线视频| 久久在精品线影院精品国产| 久久久亚洲国产| 国产亚洲精品久久| 91欧美激情另类亚洲| 国产日韩欧美在线播放| 欧美亚洲国产另类|