我在SQL Server中有一个包含id, name, address
列的表,其中id
是具有自动增量整数的主键。
我在winforms应用程序中有一个表单,其中有两个按钮:
1 previous
2 next
我想要这个功能,即当我点击上一个按钮时,我可以从表中获取所选行的前一行。当我点击下一个按钮时,我可以获得所选行的下一行....
我的表单看起来像这样
答案 0 :(得分:3)
您可以选择行ID大于/低于当前ID的前1行,因此,如果您的Id为123,则可以选择ID大于123的前1行(第1行),而不知道以下应该是124.与前一行相同。
因为它的PK应该排序行,所以你不需要添加排序命令。 当然,在询问第一行或前一行之后,你应该注意。
declare @CurrentID int = 123;
select top 1 * from [MyTable] where [MyTable].[ID] > @CurrentID;
当然,您最好使用缓存机制来实现它,以避免对每个按钮进行数据库查询,这样您就可以查询一堆行到您的应用程序内存中,而不是通过索引到上一个或下一个项目。
答案 1 :(得分:1)
你需要的只是分页。请参阅第4点http://beyondrelational.com/modules/2/blogs/70/posts/10802/multipurpose-rownumber-function.aspx
答案 2 :(得分:1)
下一个按钮
select * from table where id=id_val+1
上一个按钮
select * from table where id=id_val-1
单击任何按钮后,应将值存储在名为
的变量中id_val
答案 3 :(得分:1)
我会将每一行映射到一个对象,制作一个列表并遍历列表,这样就不会对DB进行大量调用。 当然,如果数据库中经常发生很多变化,那么这种方法并不好。