某些数据库引擎为此提供了SQL的方便扩展。就像在MySQL中,你可以说“select ... whatever ... limit 50,10”,其中“50”是开始的行,10是要检索的行数。然后在显示页面上,您只需放置下一个和上一个按钮,将相应的起始行号传回服务器,以便在查询中进行下一次运行。
如果您使用的SQL引擎没有这种方便的功能,那么您必须根据排序顺序构建一个特定于查询的“where”子句。
要举一个简单的例子,假设在您的示例中您按照“user_name”的顺序显示记录。您可以使用Statement.setMaxRows(10)将任何查询限制为10行。然后在您执行的第一个调用中,例如说,“选择...任何...来自user_name的用户顺序”。保存找到的最后一个user_name。在你的下一个按钮中,你将这个user_name传递回服务器,并且下一个调用的查询是“select ... whatever ... from user where user_name>'xxx'order by user_name”,其中'xxx'是上次调用的最后一个用户名。再次执行setMaxRows,以便再次限制为10行输出。然后你可以让用户以这种方式遍历整个输出。
让用户倒退是有点痛苦。我已经通过在每个页面的开始键值中保留一个会话变量表来完成它。
来源
2009-09-11 05:58:30
Jay
您正在使用哪种数据库产品? – adatapost 2009-09-11 03:47:01
我正在使用AppEngine的数据存储。这是一个JDO数据库。 – Jeune 2009-09-11 15:32:00