通过查询结果进行分页覆盖
民生理财 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-07-09 | 民生理财
-
-
宋一彤深入驻村点结对帮扶户开展节前慰问活
宋一彤深入驻村点、结对帮扶户开展节前慰问活动本消息 在春...
2019-07-16 | 民生理财
-
-
青岛今年以来旅游招商不断提速
青岛今年以来旅游招商不断提速单体投资逾5000万元 旅游项目...
2019-07-16 | 民生理财
-
-
不等不靠自强不息谋求脱贫
不等不靠 自强不息 谋求脱贫天全县残疾人谢良秀 “只要努力...
2019-07-15 | 民生理财
-
-
我县315农村党务村务公开工作安排会
我县“3.15”农村党务、村务公开工作安排会2月22日,我县在县...
2019-07-07 | 民生理财
-
-
2017四川省暨成都市公祭烈士活动在成都
2017·四川省暨成都市公祭烈士活动在成都市烈士陵园隆重举行...
2019-07-06 | 民生理财