程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> 用DataReader分頁與幾種傳統的分頁方法的比較(1)

用DataReader分頁與幾種傳統的分頁方法的比較(1)

編輯:關於C語言

對於數據庫的分頁,目前比較傳統的方法是采用分頁存儲過程,其實用 DataReader 也可以實現分頁 ,不需要寫存儲過程,實現效率上也比幾種比較流行的分頁方法要略快。

在開始這個方法之前,讓我們先創建一個簡單的測試環境:

use Test
GO

if exists (select * from sysobjects where id = object_id('R_Student') and type = 'u')
   drop table R_Student
GO
create table R_Student
(
   Id     nvarchar(64) Primary Key,
   Class    nvarchar(64) NOT NULL,
   Age     tinyint    NOT NULL,
   Sex     tinyint    NOT NULL  
)

GO
Declare
@i int
set @i = 0;
while (@i < 1000000)
begin
insert R_Student values('Name' + Str(@i),'Class' + Str(@i), @i % 100, @i % 2)
set @i = @i + 1
end

通過上述語句創建一個簡單的數據表,並插入100萬條記錄

DataReader 分頁的方法:

說出來很簡單,見下面程序 

    public DataSet RangeQuery(string queryString, long first, long last)
     {
       try
       {
         OpenDataReader(queryString);

         if (first < 0)
         {
           first = 0;
         }

         for (long i = 0; i < first; i++)
         {
           if (!_DataReader.Read())
           {
             return _SchemaDataSet;
           }
         }

         if (last < 0)
         {
           last = 0x7FFFFFFFFFFFFFFF;
         }

         for (long i = first; i <= last; i++)
         {
           DataRow row = NextRow();

           if (row != null)
           {
             _SchemaTable.Rows.Add(row);
           }
           else
           {
             return _SchemaDataSet;
           }
         }

         return _SchemaDataSet;
       }
       finally
       {
         CloseDataReader();
       }
     }

其實就是通過DataReader 將當前記錄移動到起始頁對應的那條紀錄,然後再開始讀數據。由於之前只是移動記錄指針,並不讀取數據,所以效率很高。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved