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

首頁 > 學院 > 開發設計 > 正文

將以前寫的SQL2分查找法通用分頁存儲過程算法 改成.net類實現

2019-11-18 16:41:43
字體:
來源:轉載
供稿:網友

using System;

namespace CountryPark.DAL
...{
    /**//**//**//// <summary>
    /// PageList 的摘要說明。
    /// </summary>
    public sealed class PageList
    ...{
        static PageList()
        ...{
        }
       
        /**//**//**//// <summary>
        /// 分頁查詢數據記錄總數獲取
        /// </summary>
        /// <param name="_tbName">----要顯示的表或多個表的連接</param>
        /// <param name="_ID">----主表的主鍵</param>
        /// <param name="_strCondition">----查詢條件,不需where</param>       
        /// <param name="_Dist">----是否添加查詢字段的 DISTINCT 默認0不添加/1添加</param>
        /// <returns></returns>
        public static string getPageListCounts(string _tbName, string _ID, string _strCondition, int _Dist)
        ...{           
            //---存放取得查詢結果總數的查詢語句                   
            //---對含有DISTINCT的查詢進行SQL構造
            //---對含有DISTINCT的總數查詢進行SQL構造
            string strTmp="", SqlSelect="", SqlCounts="";
           
            if (_Dist == 0)
            ...{
                SqlSelect = "SELECT ";
                SqlCounts = "COUNT(*)";
            }
            else
            ...{
                SqlSelect = "SELECT DISTINCT ";
                SqlCounts = "COUNT(DISTINCT "+ _ID +")";
            }
            if (_strCondition == string.Empty)
            ...{
                strTmp = SqlSelect +" @Counts="+ SqlCounts +" FROM "+ _tbName;
            }
            else
            ...{
                strTmp = SqlSelect +" @Counts="+ SqlCounts +" FROM "+ " WHERE (1=1) "+ _strCondition;
            }
            return strTmp;
        }


        /**//**//**//// <summary>
        /// 獲取分頁數據查詢SQL
        /// </summary>
        /// <param name="_tbName">----要顯示的表或多個表的連接</param>
        /// <param name="_fldName">----要顯示的字段列表</param>
        /// <param name="_PageSize">----每頁顯示的記錄個數</param>
        /// <param name="_Page">----要顯示那一頁的記錄</param>
        /// <param name="_PageCount">----查詢結果分頁后的總頁數</param>
        /// <param name="_Counts">----查詢到的記錄數</param>
        /// <param name="_fldSort">----排序字段列表或條件(如果是多字段排列Sort指代最后一個排序字段的排列順序(最后一個排序字段不加排序標記)--程序傳參如:' SortA Asc,SortB Desc,SortC ')</param>
        /// <param name="_Sort">----排序方法,0為升序,1為降序</param>
        /// <param name="_strCondition">----查詢條件,不需where</param>
        /// <param name="_ID">----主表的主鍵</param>
        /// <param name="_Dist">----是否添加查詢字段的 DISTINCT 默認0不添加/1添加</param>
        /// <returns></returns>                                                                          
        public static string getPageListSql(string _tbName, string _fldName, int _PageSize, int _Page, out int _PageCount, int _Counts, string _fldSort, int _Sort, string _strCondition, string _ID, int _Dist)
        ...{               
            string strTmp=""; //---strTmp用于返回的SQL語句
            string SqlSelect="", strSortType="", strfsortType="";  

            if (_Dist == 0)
            ...{
                SqlSelect = "SELECT ";           
            }
            else
            ...{
                SqlSelect = "SELECT DISTINCT ";               
            }

            if (_Sort == 0)
            ...{
                strFSortType = " ASC";
                strSortType = " DESC";
            }
            else
            ...{
                strFSortType = " DESC";
                strSortType = " ASC";
            }

//            ----取得查詢結果總數量-----
            int tmpCounts = 1;
            if (_Counts != 0)
            ...{
                tmpCounts = _Counts;
            }
//          --取得分頁總數
            _PageCount = (tmpCounts + _PageSize - 1)/_PageSize;
            //    /**//**當前頁大于總頁數 取最后一頁**/
            if (_Page > _PageCount)
            ...{
                _Page = _PageCount;
            }
            if (_Page <= 0)
            ...{
                _Page = 1;
            }
//          --/*-----數據分頁2分處理-------*/
            int pageIndex = tmpCounts/_PageSize;
            int lastCount = tmpCounts%_PageSize;
            if (lastCount > 0)
            ...{
                pageIndex = pageIndex + 1;
            }
            else
            ...{
                lastCount = _PageSize;
            }
            if (_strCondition == string.Empty) // --沒有設置顯示條件
            ...{
                if (pageIndex < 2 || _Page <= (pageIndex/2 + pageIndex%2))  //--前半部分數據處理
                ...{
                    if (_Page == 1)
                    ...{
                        strTmp = SqlSelect +" TOP "+ _PageSize +" "+ _fldName +" FROM "+ _tbName +" ORDER BY "+ _fldSort +" "+ strFSortType;
                    }
                    else
                    ...{
                        strTmp = SqlSelect +" TOP "+ _PageSize +" "+ _fldName +" FROM "+ _tbName +" WHERE "+ _ID +" <(SELECT MIN("+ _ID +") FROM ("+ SqlSelect +" TOP "+ _PageSize*(_Page-1) +" "+ _ID +" FROM "+ _tbName +
                            " ORDER BY "+ _fldSort +" "+ strFSortType +") AS TBMinID) ORDER BY "+ _fldSort +" "+ strFSortType;
                    }
                }
                else
                ...{
                    _Page = pageIndex - _Page + 1; //后半部分數據處理
                    if (_Page <= 1) //--最后一頁數據顯示
                    ...{
                        strTmp = SqlSelect +" * FROM ("+ SqlSelect +" TOP "+ lastCount +" "+ _fldName +" FROM "+ _tbName +" ORDER BY "+ _fldSort +" "+ strSortType +") AS TempTB"+ " ORDER BY "+ _fldSort +" "+ strFSortType;
                    }
                    else
                    ...{
                        strTmp = SqlSelect +" * FROM ("+ SqlSelect +" TOP "+ _PageSize +" "+ _fldName +" FROM "+ _tbName +
                            " WHERE "+ _ID +" >(SELECT MAX("+ _ID +") FROM("+ SqlSelect +" TOP "+ (_PageSize*(_Page-2)+lastCount) +" "+ _ID +" FROM "+ _tbName +
                            " ORDER BY "+ _fldSort +" "+ strSortType +") AS TBMaxID) ORDER BY "+ _fldSort +" "+ strSortType +") AS TempTB ORDER BY "+ _fldSort +" "+ strFSortType;
                    }
                }
            }
            else // --有查詢條件
            ...{
                if (pageIndex < 2 || _Page <=(pageIndex/2 + pageIndex%2))//--前半部分數據處理
                ...{
                    if (_Page == 1)
                    ...{
                        strTmp = SqlSelect +" TOP "+ _PageSize +" "+ _fldName +" FROM "+ _tbName +"WHERE 1=1 "+ _strCondition +" ORDER BY "+ _fldSort +" "+ strFSortType;
                    }
                    else
                    ...{
                        strTmp = SqlSelect +" TOP "+ _PageSize +" "+ _fldName +" FROM "+ _tbName +
                            " WHERE "+ _ID +" <(SELECT MIN("+ _ID +") FROM ("+ SqlSelect +" TOP "+ (_PageSize*(_Page-1)) +" "+ _ID +" FROM " +_tbName +
                            " WHERE 1=1 "+ _strCondition +" ORDER BY "+ _fldSort +" "+ strFSortType +") AS TBMaxID) "+ _strCondition +
                            " ORDER BY "+ _fldSort +" "+ strFSortType;                           
                    }
                }
                else //--后半部分數據處理
                ...{
                    _Page = pageIndex-_Page+1;
                    if (_Page <= 1) //--最后一頁數據顯示
                    ...{
                        strTmp = SqlSelect +" * FROM ("+ SqlSelect +" TOP "+ lastCount +" "+ _fldName +" FROM "+ _tbName +
                            " WHERE 1=1 "+ _strCondition +" ORDER BY "+ _fldSort +" "+ strSortType +") AS TempTB ORDER BY "+ _fldSort +" "+ strFSortType;
                    }
                    else
                    ...{  
                        strTmp = SqlSelect +" * FROM ("+ SqlSelect +" TOP "+ _PageSize +" "+ _fldName +" FROM "+ _tbName +
                            " WHERE "+ _ID +" >(SELECT MAX("+ _ID +") FROM("+ SqlSelect +" TOP "+ (_PageSize*(_Page-2)+ lastCount) +" "+ _ID +" FROM "+ _tbName +
                            " WHERE 1=1 "+ _strCondition +" ORDER BY "+ _fldSort +" "+ strSortType +") AS TBMaxID) "+ _strCondition +
                            " ORDER BY "+ _fldSort +" "+ strSortType +") AS TempTB ORDER BY "+ _fldSort +" "+ strFSortType;
                    }
                }
            }

            return strTmp;
        }
    }
}
--以上代碼是針對之前寫的TOP MAX模式的分頁存儲過程修改
--以上分頁算法對SQL SERVER 和 access同樣有效
參見:http://www.49028c.com/hertcloud/archive/2005/12/21/301327.html

 

 

//調用函數例子
public IList getParkDataList(string key, int curPage, out int pageCount, int pageSize, int Counts)
        ...{
           
            IList list = new ArrayList();

            string SECLECT_FIELD = "T_Park.ParkID, T_Park.ParkTitle, T_Park.ParkLetter, T_ParkArea.AreaName, T_ParkType.ParkTypeName ";
            string SECLECT_TABLE = "T_ParkType INNER JOIN (T_ParkArea INNER JOIN T_Park ON T_ParkArea.ParkAreaID = T_Park.ParkAreaID) ON T_ParkType.ParkTypeID = T_Park.ParkTypeID";
            string SECLECT_CONDITION = string.Empty;


            if (key != string.Empty)
            ...{
                SECLECT_CONDITION = " AND T_Park.ParkTitle like '%"+ key +"%'";
            }

            string SELECT_ID = "ParkID";
            string SELECT_FLDSORT = "ParkID";
            int SELECT_SORT = 1;
            int SELECT_DIST = 0;
            string SQL = PageList.getPageListSql(SECLECT_TABLE, SECLECT_FIELD, pageSize, curPage, out pageCount, Counts, SELECT_FLDSORT, SELECT_SORT, SECLECT_CONDITION, SELECT_ID, SELECT_DIST);
            //string strCondition;       
            OleDb db = new OleDb();
            ParkBE park;           
            using(OleDbDataReader dr = (OleDbDataReader)db.ExecuteReader(CommonFun.GetConnectionString(), CommandType.Text, SQL))
            ...{
                while (dr.Read())
                ...{   
                    park = new ParkBE();
                    park.ParkID = Convert.ToInt32(dr[0]);
                    park.ParkTitle = dr[1].ToString();
                    park.ParkLetter = dr[2].ToString();
                    park.ParkAreaName = dr[3].ToString();
                    park.ParkTypeName = dr[4].ToString();
                    list.Add(park);
                }
            }           
            return list;
        }
http://blog.csdn.net/todaywlq/archive/2007/01/29/1497418.aspx


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品第七影院| 欧美精品在线看| 欧美精品一区在线播放| 欧美黑人又粗大| 97精品国产91久久久久久| 国产精品久久久久久久久久三级| 久久精品视频播放| 国产精品视频播放| 中文字幕亚洲色图| 伊人激情综合网| 亚洲欧美国产高清va在线播| 91麻豆国产精品| 欧美午夜无遮挡| 亚洲天堂av女优| 26uuu亚洲伊人春色| 91国语精品自产拍在线观看性色| 国产成人黄色av| 91精品国产色综合久久不卡98口| 精品国产一区av| 777国产偷窥盗摄精品视频| 欧美日韩成人免费| 日本国产精品视频| 亚洲电影免费观看高清完整版在线观看| 精品国产91乱高清在线观看| 亚洲偷熟乱区亚洲香蕉av| 精品亚洲国产成av人片传媒| 国产精品老女人精品视频| 亚洲电影免费观看| 日韩最新免费不卡| 国产精品日韩在线播放| 日韩电影中文 亚洲精品乱码| 8x海外华人永久免费日韩内陆视频| 日本三级久久久| 欧美黑人一区二区三区| 精品亚洲夜色av98在线观看| 欧美激情免费在线| 最近2019年好看中文字幕视频| 久久久久久999| 在线色欧美三级视频| 91在线观看免费观看| 国产精品久久激情| 91久久中文字幕| 日韩免费精品视频| 欧美精品福利视频| 国产在线观看不卡| 国产亚洲精品美女| 欧美激情免费看| 国产精品日韩久久久久| 欧美野外猛男的大粗鳮| 欧美超级乱淫片喷水| 欧美成人性生活| 国产视频999| 亚洲精品国精品久久99热| 久久久久亚洲精品| 国产精品日韩一区| 国产成人亚洲综合91| 中文字幕欧美国内| 欧洲成人免费视频| www.欧美视频| 国产精品三级久久久久久电影| 日韩av在线一区二区| 久久久久久久国产| 国产精品高潮呻吟久久av黑人| 91久久精品一区| 午夜精品三级视频福利| 国产精品视频色| 亚洲成人免费在线视频| 视频直播国产精品| 亚洲男人天堂久| 亚洲精品国产精品国自产在线| 亲子乱一区二区三区电影| 亚洲精品电影久久久| 精品久久久久久久久久久久久| 欧美日韩国产成人高清视频| 人妖精品videosex性欧美| 国产精品人成电影在线观看| 亚洲视频在线观看| 精品久久中文字幕久久av| 欧美激情videos| 日韩免费电影在线观看| 久久精品中文字幕免费mv| 91久久国产综合久久91精品网站| 色偷偷av一区二区三区| 亚洲人成在线一二| 国产欧美va欧美va香蕉在| 国产精品精品视频一区二区三区| 亚洲日本欧美日韩高观看| 成人精品久久av网站| 久久99视频精品| 日韩女在线观看| 欧美激情区在线播放| 国产一区二区三区久久精品| 国产精品aaa| 亚洲精品影视在线观看| 91色精品视频在线| 国模精品一区二区三区色天香| 欧美性在线视频| 亚洲激情视频网站| 久久国产精品久久久久久| 国产免费一区二区三区在线观看| 欧美日韩国产精品一区| 日本久久亚洲电影| 久久精品国产免费观看| 性色av一区二区三区红粉影视| 久久香蕉频线观| 国产精品福利观看| 在线播放国产一区中文字幕剧情欧美| 亚洲一品av免费观看| 亚洲人成电影在线观看天堂色| 国产一区二区黑人欧美xxxx| 国产亚洲成av人片在线观看桃| 最近2019年好看中文字幕视频| 欧美大码xxxx| 亚洲一级免费视频| 亚洲免费高清视频| 亚洲国产日韩欧美综合久久| 久久精品国产一区二区三区| 在线观看成人黄色| 热久久美女精品天天吊色| 欧美激情一区二区三级高清视频| 成人h片在线播放免费网站| 国产99久久精品一区二区永久免费| 色悠久久久久综合先锋影音下载| 精品视频www| 欧美在线一级视频| 国产精品第2页| 国产精品福利小视频| 欧美激情精品在线| 91精品久久久久久综合乱菊| 欧美成人午夜剧场免费观看| 欧美高清视频在线播放| 性欧美亚洲xxxx乳在线观看| 亚洲成人av资源网| 91精品国产高清久久久久久91| 久久777国产线看观看精品| 国内精品久久久久久久| 亚洲人线精品午夜| 日韩精品一区二区视频| 欧美日韩国产在线| 国产精品亚洲一区二区三区| 日韩风俗一区 二区| 91在线国产电影| 国产精品麻豆va在线播放| xvideos成人免费中文版| 成人久久久久久久| 亚洲护士老师的毛茸茸最新章节| 亚洲国产精品成人av| 亚洲最大福利网站| 日韩视频免费在线观看| 欧美乱妇高清无乱码| 久久久久久久久久久成人| 欧美激情网友自拍| 日本亚洲欧洲色α| 国产欧美一区二区三区久久人妖| 秋霞午夜一区二区| 青青精品视频播放| 亚洲一区二区福利| 国产精品免费一区二区三区都可以| 亚洲国产日韩欧美综合久久| 国产精品视频yy9099| 欧美激情va永久在线播放| 精品动漫一区二区| 伦伦影院午夜日韩欧美限制| 欧美一级高清免费播放|