通过查询结果进行分页

通过查询结果进行分页就是以结果集的子集处理查询结果的过程,这样,每次返回给用户的只是当前页面的数据大小。DataAdapter对象通过重载Fill方法提供了返回当前页面数据的功能。然而,这种方法对大数据量的查询结果并不是最好的选择,这是因为:当DataAdapter用请求的结果填充DataTable或者DataSet时,数据库返回的资源仍是全部的查询结果,只是在返回时附加了额外的限定条件才返回
摘要由CSDN通过智能技术生成

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

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

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

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

[VB.NET]

  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() myDA.Fill(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(); myDA.Fill(myDS, currentIndex, pageSize, "Orders"); 

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

[VB.NET]

  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() myDA.Fill(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(); myDA.Fill(myDS, "Orders"); 

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

  [VB.NET] Dim lastRecord As String = myDS.Tables("Orders").Rows(pageSize - 1)("OrderID").ToString() [C#] string lastRecord = myDS.Tables["Orders"].Rows[pageSize - 1]["OrderID"].ToString(); 

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

  [VB.NET] currentIndex = currentIndex + pageSize myDS.Tables("Orders").Rows.Clear() myDA.Fill(myDS, currentIndex, pageSize, "Orders") [C#] currentIndex += pag
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java查询出结果再进行分页,需要先查询出所有符合条件的数据,然后再进行分页显示。一般情况下,我们会使用List集合来存储查询出来的数据,然后再根据需要显示分页的数据。 以下是Java查询出结果再进行分页的示例代码: ```java // 查询符合条件的所有数据 String sql = "SELECT * FROM table_name WHERE condition = ?"; PreparedStatement pstmt = conn.prepareStatement(sql); pstmt.setString(1, "value"); ResultSet rs = pstmt.executeQuery(); List<Object> list = new ArrayList<Object>(); // 用于存储查询出来的数据 while (rs.next()) { Object obj = new Object(); // 将查询出来的数据封装到对象中 list.add(obj); } // 对查询出来的数据进行分页处理 int pageNo = 1; // 需要显示的页码 int pageSize = 10; // 每页显示的记录数 int totalCount = list.size(); // 查询出来的数据总数 int pageCount = (totalCount + pageSize - 1) / pageSize; // 计算总页数 int startIndex = (pageNo - 1) * pageSize; // 计算起始索引 int endIndex = pageNo * pageSize; // 计算结束索引 if (endIndex > totalCount) { endIndex = totalCount; } List<Object> pageList = list.subList(startIndex, endIndex); // 获取需要显示的数据 // 显示分页数据 for (Object obj : pageList) { // 显示数据 } ``` 在上述代码中,首先使用PreparedStatement对象执行SQL语句,将查询出来的数据存储到List集合中。然后,通过计算总页数、起始索引和结束索引,从List集合中获取需要显示的数据,最后进行分页显示。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值