我用ASP.NET想得到从第10条记录开始的20条记录,请问各位大大怎么写这个代码

解决方案 »

  1.   

    可以开始考虑使用SQL 2005了!
      

  2.   

    直接用sql语句不行么
    不过得先排序!
    select top 20 !
      

  3.   

    如果使用DataSet
    oledbadaper.fill()函数里面就有 从第几个开始,取多少个数据的参数
      

  4.   

    先select top 20 *放里面
    外面在selet top 10 * ...... descORACLE的话 rownum
      

  5.   

    Dim da As New SqlDataAdapter(xxx) 
    Dim ds As DataSet
    ...................
    da.Fill(ds, i, Num, "Tabel1")
    思路是把整张表的记录全读到一个SqlDataAdapter中,然后用DataSet从中取出你想要的,其中:
    i表示从第几条起(比如从第10条开始取,则i=9),Num表示你一共想取的条数(比如你想取10条,则Num=10)。
      

  6.   

    这个问题好向在sql 2000里不好解决吧?
      

  7.   

    知道你也做高性能分页功能的。看看我的存储过程
    CREATE PROCEDURE Admin_Article_Manage_BindList  
    (@PageSize int,
    @PageNo int)
    as
    declare @Countrows integer
    select @Countrows=count(ID) from Article where deleted=0
    if (@Countrows>0)--如果有数据才进行分页取数据set nocount on
    declare @indextable table(id int identity(1,1),nid int)
    declare @PageLowerBound int
    declare @PageUpperBound int
    set @PageLowerBound=(@PageNo-1)*@PageSize
    set @PageUpperBound=@PageLowerBound+@PageSize
    set rowcount @PageUpperBound
    insert into @indextable(nid) select ID from Article where deleted=0 order by UpdateTime desc
    select 
    CASE O.pass
          WHEN '1' THEN '已通过'
          
          ELSE '<font color="#FF0000"/>未通过'
       END AS pass,
    CASE O.IncludePic
          WHEN '1' THEN '<font color="#0066FF">[有图]</font>'
          
          ELSE '<font color="#CCCCCC">[无图]</font>'
       END AS IncludePic,O.ID,O.Title,O.Editor,O.Hits,(select Class.ClassName from Class where Class.ID=O.ClassID) as class,O.ClassID from Article O,@indextable t where O.ID=t.nid
    and t.id>@PageLowerBound and t.id<=@PageUpperBound order by t.id
    set nocount offreturn @Countrows
    GO
      

  8.   

    还有一个没有测试的方法
    CREATE PROCEDURE test @pagesize int,@pageno int as
    SELECT TOP 10 * FROM Article WHERE (ID > (SELECT MAX(id) 
    FROM (SELECT TOP 20 id FROM Article ORDER BY id) AS T)) ORDER BY ID 
    --10是页大小
    declare @TopN integer
    set @TopN=@pagesize * @pageno
    SELECT TOP 10 * FROM Article WHERE (ID >
    (SELECT MAX(id) FROM (SELECT TOP @TopN id FROM Article ORDER BY id) AS T)) 
    ORDER BY ID
      

  9.   

    直接用sql实现
    select top 10 * from 
    (select top 20 * from table order by field desc(根据你的要求排序) ) 
    order by  order by field asc(根据你的要求反排序)
      

  10.   

    vb.net demo,以Northwind.mdb为例.Dim dsn As String = "provider=microsoft.jet.oledb.4.0;data source=" & Server.MapPath("database/Northwind.mdb")
            Dim conn As New OleDbConnection(dsn)
            Dim strsql As String = "select top 20 客户ID,公司名称 from 客户 where 客户ID not in(select top 10 客户ID from 客户 order by 客户id) order by 客户id"        Dim da As New OleDbDataAdapter(strsql, conn)
            Dim ds As New DataSet
            Dim ds_count As Integer
            Try
                ds_count = da.Fill(ds, "客户")
            Catch ex As Exception
                RegisterClientScriptBlock("err", "<script language=""javascript"">alert('" & ex.Message.ToString.Replace("'", "") & "')" & "</script>")
            End Try        If ds_count > 0 Then
                DataGrid1.DataSource = ds.Tables("客户").DefaultView
                DataGrid1.DataBind()
            End If
            ds.Dispose()
            da.Dispose()
            conn.Dispose()