程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> ASP編程 >> ASP技巧 >> sql存儲過程----分頁顯示表中的記錄

sql存儲過程----分頁顯示表中的記錄

編輯:ASP技巧
通常在顯示表中的記錄的時候,由於記錄很多,需要對記錄進行分頁顯示,這裡是利用sql存儲過程進行分頁顯示
1、數據庫和字段,conn.ASP見
http://www.aspprogram.cn/detail.ASP?id=35
請在表中添加幾條記錄

2、存儲過程代碼
    CREATE PROCEDURE dbo.getUserList
       @iPageCount int OUTPUT,   --總頁數
       @iPage int,               --當前頁號
       @iPageSize int            --每頁記錄數
    as
    set nocount on
    begin
       --創建臨時表 
       create table #t (ID int IDENTITY,   --自增字段
                        y_id int,
                        y_username varchar(40),
                        y_passWord varchar(40))
       --向臨時表中寫入數據
       insert into #t 
          select y_id,y_username,y_passWord from dbo.[user]
             order by y_id desc
       
       --取得記錄總數 
       declare @iRecordCount int
       set @iRecordCount = @@rowcount

       --確定總頁數
       IF @iRecordCount%@iPageSize=0
          SET @iPageCount=CEILING(@iRecordCount/@iPageSize)
       ELSE
          SET @iPageCount=CEILING(@iRecordCount/@iPageSize)+1
 
       --若請求的頁號大於總頁數,則顯示最後一頁
       IF @iPage > @iPageCount
          SELECT @iPage = @iPageCount

       --確定當前頁的始末記錄
       DECLARE @iStart int    --start record
       DECLARE @IEnd int      --end record
       SELECT @iStart = (@iPage - 1) * @iPageSize
       SELECT @IEnd = @iStart + @iPageSize + 1

       --取當前頁記錄    
       select * from #t where ID>@iStart and ID<@IEnd

       --刪除臨時表
       DROP TABLE #t

       --返回記錄總數
       return @iRecordCount
    end
GO


3、顯示記錄list2.ASP
<!--#include file="conn.ASP"-->
<%
'**調用分頁存儲過程**
    DIM pagenow,pagesize,pagecount,recordcount
    DIM MyComm,MyRst
    pagenow =Request("pn") 
    '自定義函數用於驗證自然數
    if pagenow = "" then pagenow = 1
 pagenow=CInt(pagenow)
    pagesize = 2
    Set MyComm = Server.CreateObject("ADODB.Command")
    with MyComm
       .ActiveConnection = conn          'conn是數據庫連接字串
       .CommandText      = "getUserList"     '指定存儲過程名
       .CommandType      = 4                 '表明這是一個存儲過程
       .Prepared         = true              '要求將SQL命令先行編譯
       '返回值(記錄總量) 
       .Parameters.Append .CreateParameter("RETURN",2,4)
       '出參(總頁數)
       .Parameters.Append .CreateParameter("@iPageCount",3,2)
       '入參(當前頁號)
       .Parameters.append .CreateParameter("@iPage",3,1,4,pagenow)
       '入參(每頁記錄數)
       .Parameters.append .CreateParameter("@iPageSize",3,1,4,pagesize)
       Set rs = .Execute
    end with
    if rs.state = 0 then        '未取到數據,rs關閉
       recordcount = -1
    else
       rs.close    '注意:若要取得參數值,需先關閉記錄集對象
       recordcount = MyComm(0)
       pagecount   = CInt(MyComm(1))
       if cint(pagenow)>=cint(pagecount) then pagenow=pagecount
    end if
    Set MyComm = Nothing

    '以下顯示記錄
    if recordcount = 0 then
       Response.Write "無記錄"
    elseif recordcount > 0 then
       rs.open
       Do While Not rs.eof
    response.write rs("y_id")&#38;":"&#38;rs("y_username")&#38;"----"&#38;rs("y_passWord")&#38;"<br>"
    rs.movenext
    loop     
   '*****************************分頁代碼**********************
       If pagenow>1 Then
        response.write "<a href=""?pn=1"">首頁</a> "
    Else
     response.write "首頁 "
    End If
    If pagenow>1 Then
      response.write "<a  href=""?pn="&#38;pagenow-1&#38;""">上一頁</a> "
    Else
     response.write "上一頁 "
    End If
    If pagenow<pagecount Then
      response.write "<a href=""?pn="&#38;pagenow+1&#38;""">下一頁</a> "
    Else
      response.write "下一頁 "
    End If
    If pagenow<pagecount Then
     response.write "<a href=""?pn="&#38;pagecount&#38;""">尾頁</a> "
    Else
     response.write "尾頁 "
    End if    
    else  'recordcount=-1
       Response.Write "參數錯誤"
    end If
'*********************結束*****************************
%>

4、

5、完成,運行list2.ASP文件,就可以看到內容了,點擊 首頁,上一頁,下一頁,尾頁來體驗分頁的感覺。
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved