确保我理解正确:您正在显示,
Record并且想要显示所有记录的分页列表,从而预选了包含您的项目的页面?
首先,您必须知道关系数据库不提供数据库中记录的任何隐式排序。尽管它们似乎是从头到尾添加的,但它并不便携且可靠。
因此,您的分页列表/网格必须按某些列进行显式排序。为简单起见,假设您的网格按排序
id。您知道当前显示的记录的ID(例如:)
X。首先,您需要根据此排序顺序找出记录在表中的哪个位置:
SELECt COUNT(r)FROM Record rWHERe r.id < :X
该查询将返回记录 之前 的记录数。现在很简单:
int page = count / pageSize
page基于0。
不幸的是,如果您的排序列不是唯一的,则可能无法在所有情况下都起作用。但是,如果该列不是唯一的,则排序本身就不稳定(具有相同值的记录可能会以随机顺序出现),因此请考虑按额外的唯一列进行排序:
...ORDER BY r.sex, r.id
在这种情况下,记录首先按
sex(很多重复项)和ID 排序。在当前记录之前对记录进行计数的解决方案仍然有效。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)