分頁算法(也就是分頁讀取數據的時候使用的select 語句)面臨兩大難題:一個是不同的數據庫使用的分頁算法是不一樣的(比如SQL Server 2000可以使用Max、表變量、顛倒Top,SQL Server 2005可以使用Row_Number,MySql可以使用limit ,Orcale可以使用ROWNUM等);另一個是,不同的分頁需求,可以采用的分頁算法也是不一樣的(比如單字段排序和多字段排序)。那麼我們應該如何來選擇呢?
好多人都想找到一種即通用,效率又高的分頁算法,那麼能不能找到呢?我是找了很久都沒有找到,看了許多人寫得文章,我也沒有發現(請不要和我說那個什麼表變量的)。既然找不到,那就要做多手准備了。
我的想法就是准備多種分頁算法的“模板”,然後根據數據庫的種類,根據分頁需求來選擇到底是用哪一種分頁算法。就是說使用哪一種是不固定的,依據條件而定。那麼如何來實現呢?我做了一個類庫來做這個事情,請看下面的圖示: