ADO.NET 查询一条记录,如何获得上一条记录的ID,和下一条记录的ID。
(做文章管理系统时用到,显示一篇文章时,得到上一篇文章的ID,和下一篇文章的ID,可以做个链接方便查看下一篇文章)

解决方案 »

  1.   

    在取数的sql语句中加入这两个就行啊
      

  2.   

    上一条记录的ID:(小于的最大值)
    select max(id) from ... where id<yourid
    下一条记录的ID
    select min(id) from .... where Id>yourid并在一起
    select ..,(select max(id) from ... where id<yourid) as ..,(select min(id) from .... where Id>yourid) as .. from ....
      

  3.   

    当前文章显示界面只记录当前文章的ID即可.比如当前显示文章ID为:5
    在点击下一页时.传URL.
    Response.Redirect("http://web/ReadArticle?ArticleID="+(ID+1).ToString());ID+1后的值是否上溢或下溢,在ReadArticle页面初始化时判断即可
      

  4.   

    上面几个方法都可以。
    不过我一般使用ChengKing的那种。
      

  5.   

    如果IDL连续的话, ChengKing(bantamweight)和cm8983(思远)的方法都可以,如果ID不连续的话,我觉得cm8983(思远)的方法比较好。
      

  6.   

    CREATE PROCEDURE pTable2_getPN
    @titleid varchar(30)
     AS
    declare @kind varchar(30),@P varchar(100),@Pid varchar(30),@Ptitle varchar(50),@N varchar(100),@Nid varchar(30),@Ntitle varchar(50)
    set @kind=(select top 1 kind from table2 where id=@titleid)
    select top 1 @Ptitle=title,@Pid=id from table2 where id<convert(int,@titleid) and kind=@kind order by id desc
    select top 1 @Ntitle=title,@Nid=id from table2 where id>convert(int,@titleid) and kind=@kind order by id 
    if @Ptitle is null
    set @Ptitle=''
    if @Pid is null
    set @Pid=''
    if @Ntitle is null
    set @Ntitle=''
    if @Nid is null
    set @Nid=''
    set @P='<Li>上一篇 :<A href="viewTitle.aspx?titleid='+@Pid+'">'+@Ptitle+'</A>'
    set @N='<Li>下一篇 :<A href="viewTitle.aspx?titleid='+@Nid+'">'+@Ntitle+'</A>'
    select @P+'<br>'+@N as innerhtml
    GO
      

  7.   

    谢谢你们的解答! ;--)三个办法都很好,嘿嘿。 跟据实际选择。我选择用的在查询语句中实现这种方法select ..,(select max(id) from ... where id<yourid) as ..,(select min(id) from .... where Id>yourid)这种方法在连续性的ID中,很实用。
    Response.Redirect("http://web/ReadArticle?ArticleID="+(ID+1).ToString());