首页 >> 民生舆情

通过查询结果进行分页覆盖

民生舆情  2021-08-24 13:34 字号: 大 中 小

通过查询结果进行分页就是以结果集的子集处理查询结果的过程,这样,每次返回给用户的只是当前页面的数据大小。

全新皇冠试图用“自降身段”的方式 DataAdapter对象通过重载Fill方法提供了返回当前页面数据的功能。然而,这种方法对大数据量的查询结果并不是最好的选择,这是因为:当DataAdapter用请求的结果填充DataTable或者DataSet时,数据库返回的资源仍是全部的查询结果,只是在返回时附加了额外的限定条件才返回了少量的记录集的。

要使用Fill方法返回当前一页的记录,需要指定开始记录startRecord,和当前页的最大记录数maxRecords。

下面的例子用来返回一页为5条记录的第一页的查询结果:

[]

Dim currentIndex As Integer = 0

Dim pageSize As Integer = 5

Dim orderSQL As String = \"SELECT * FROM Orders ORDER BY OrderID\"

Dim myDA As SqlDataAdapter = New SqlDataAdapter(orderSQL, nwindConn)

Dim myDS As DataSet = New DataSet()

ll(myDS, currentIndex, pageSize, \"Orders\")

[C#]

int currentIndex = 0;

int pageSize = 5;

string orderSQL = \"SELECT * FROM Orders ORDER BY OrderID\";

SqlDataAdapter myDA = new SqlDataAdapter(orderSQL, nwindConn);

DataSet myDS = new DataSet();

ll(myDS, currentIndex, pageSize, \"Orders\");

在上面的例子中,DataSet只填充了5条记录,但返回的仍是整个Orders表。如果要达到填充几条返回几天的目的,在SQL语句中使用TOP和WHERE从句即可。例如:

[]

Dim pageSize As Integer = 5

Dim orderSQL As String = \"SELECT TOP \" pageSize \" * FROM Orders ORDER BY OrderID\"

Dim myDA As SqlDataAdapter = New SqlDataAdapter(orderSQL, nwindConn)

Dim myDS As DataSet = New DataSet()

ll(myDS, \"Orders\")

[C#]

int pageSize = 5;

string orderSQL = \"SELECT TOP \" + pageSize + \" * FROM Orders ORDER BY OrderID\";

SqlDataAdapter myDA = new SqlDataAdapter(orderSQL, nwindConn);

DataSet myDS = new DataSet();

ll(myDS, \"Orders\");

此时需要注意的是:用这种方法进行的分页,必须自己维护记录排序的唯一标识,为了向下一页请求传递唯一的ID,我们必须象下面那样:

[]

Dim lastRecord As String = bles(\"Orders\").Rows(pageSize - 1)(\"OrderID\").ToString()

[C#]

string lastRecord = bles[\"Orders\"].Rows[pageSize - 1][\"OrderID\"].ToString();

下面的代码在Table填充之前进行了清空:

[]

currentIndex = currentIndex + pageSize

bles(\"Orders\").ear()

ll(myDS, currentIndex, pageSize, \"Orders\")

[C#]

currentIndex += pageSize;

bles[\"Orders\"].ear();

ll(myDS, currentIndex, pageSize, \"Orders\");

下面是完整的代码:

[C#]

using System;

using ta;

using lClient;

using awing;

using rms;

public class PagingSample: Form

{

// Form 控件.

Button prevBtn = new Button();

Button nextBtn = new Button();

static DataGrid myGrid = new DataGrid();

static Label pageLbl = new Label();

// 分页变量

static int pageSize = 10; // 要显示的页数

static int totalPages = 0; // 总页数

static int currentPage = 0; // 当前页

static string firstVisibleCustomer = \"\"; // 当前页的第一条记录,用来进行移动“前一页”的定位。

static string lastVisibleCustomer = \"\"; //当前页的最后条记录,用来进行移动“下一页”的定位。

// DataSet用来绑定到DataGrid.

static DataTable custTable;

//初始化连接和DataAdapter.

static SqlConnection nwindConn = new SqlConnection(\"Data Source=.;Integrated Security=SSPI;Initial Catalog=northwind\");

static SqlDataAdapter custDA = new SqlDataAdapter(\"\", nwindConn);

static SqlCommand selCmd = lectCommand;

查看本文来源

呼和浩特治疗妇科习惯性流产费用
哈尔滨不孕不育医院治疗
西安治妇科去哪里
推荐资讯