3

我在 SQL Server 中有一个表,id, name, address其中的列id是具有自动增量整数的主键。

我在 winforms 应用程序中有一个表单,其中有两个按钮:

1 previous
2 next

我想要该功能,即当我单击上一个按钮时,我可以从表中获取所选行的上一行。同样,当我单击下一个按钮时,我可以获得所选行的下一行....

我的表格看起来像这样

在此处输入图像描述

4

4 回答 4

3

您可以选择行 ID 大于/小于当前 ID 的前 1 行,因此如果您的 ID 为 123,您可以选择 ID 大于 123 的前 1 行(第一行)而不知道以下应该是124. 同上一行。

因为它是PK,所以应该对行进行排序,所以你不需要添加排序命令。当然,在询问第一行的上一行或最后一行之后的下一行时,您应该小心。

declare @CurrentID int = 123;
select top 1 * from [MyTable] where [MyTable].[ID] > @CurrentID;

当然,您最好使用缓存机制来实现它,以避免为每个按钮点击进行数据库查询,这样您就可以将一堆行查询到您的应用程序内存中,而不是通过索引查找上一个或下一个项目。

于 2012-07-19T09:01:42.150 回答
1

你所需要的只是分页。参考第 4 点http://beyondrelational.com/modules/2/blogs/70/posts/10802/multipurpose-rownumber-function.aspx

于 2012-07-19T09:05:52.870 回答
1

下一步按钮

select * from table where id=id_val+1

上一个按钮

select * from table where id=id_val-1

单击任何按钮后,您应该将值存储在一个名为的变量中

id_val
于 2012-07-19T09:10:47.803 回答
1

我会将每一行映射到一个对象中,创建一个列表并遍历该列表,这样您就不会对数据库进行大量调用。当然,如果数据库中通常会发生很多变化,那么这种方法就不好了。

于 2012-07-19T09:14:01.337 回答