通过查询结果进行分页覆盖
民生舆情 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;
查看本文来源
呼和浩特治疗妇科习惯性流产费用哈尔滨不孕不育医院治疗
西安治妇科去哪里
-
-
借助现阶段利好政策万宁将打造高端滨海度假
借助现阶段利好政策 万宁将打造高端滨海度假旅游基地借助现...
2020-08-13 | 民生舆情
-
-
埃梅里厄齐尔除了助攻还得进球欧联杯我要轮
埃梅里:厄齐尔除了助攻还得进球 欧联杯我要轮换埃梅里赛后...
2020-07-04 | 民生舆情
-
-
詹皇抠门那是詹韦秀恩爱NBA最抠门其实是搭配
詹皇抠门?那是詹韦秀恩爱 NBA最抠门其实是他邦纳 北...
2020-06-02 | 民生舆情
-
-
取关门主角松口表态想续约难道他真的长大了搭配
取关门主角松口表态想续约!难道他真的长大了考神最终会续...
2020-05-31 | 民生舆情
-
-
张世敏到我区调研社区建设
张世敏到我区调研社区建设8月30日,副市长张世敏到我区调研...
2019-07-16 | 民生舆情
-
-
港口区假日旅游市场繁荣
港口区假日旅游市场繁荣4月29日至5月1日,港口区天气晴好,...
2019-07-16 | 民生舆情