一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語(yǔ)言|JavaScript|易語(yǔ)言|vb.net|

服務(wù)器之家 - 編程語(yǔ)言 - ASP教程 - asp 存儲(chǔ)過(guò)程分頁(yè)代碼

asp 存儲(chǔ)過(guò)程分頁(yè)代碼

2019-09-16 11:00asp教程網(wǎng) ASP教程

asp類加存儲(chǔ)過(guò)程分頁(yè)方法,查詢使用非常方便 new 一個(gè)類,加幾個(gè)參數(shù),就可以分頁(yè)顯示、多條件查詢、多個(gè)字段排序等功能、連表查詢等,一氣呵成!

存儲(chǔ)過(guò)程采用的是select top 加 not in的方式完成,速度也算是相當(dāng)快了 我測(cè)試過(guò)了百萬(wàn)級(jí)數(shù)據(jù)量一般查詢?cè)?秒一下,貼出來(lái)大家交流下,看有沒有什么好的建議。 
簡(jiǎn)單幾句話就可以實(shí)現(xiàn)分頁(yè)功能,請(qǐng)看代碼: 
最簡(jiǎn)單使用方法(適用于任何數(shù)據(jù)表): 
test.asp 

復(fù)制代碼代碼如下:


<!--#include file="conn.asp"--> 
<!--#include file="Page.asp"--> 
<% 
Set My = New Page 
With My 
.SetConnstr=Connstr '數(shù)據(jù)庫(kù)鏈接字符串 
.SetStrTable="users" '表名 
.SetStrText="id,username,type,names" '查詢的字段 
.SetStrIndex="id" '主鍵 
rsArray=.GetRs() '返回?cái)?shù)據(jù),類型為數(shù)組 
End With 
%> 
<table> 
<% 
if IsArray(rsArray) then 
For i = 0 To UBound(rsArray, 2) 
%> 
<tr> 
<td><%= rsArray(0, i) %></td> 
<td><%= rsArray(1, i) %></td> 
<td><%= rsArray(2, i) %></td> 
</tr> 
<% 
next 
end if 
%> 
<tr> 
<td colspan="4">共<%= My.GetTotalNum %>條 每頁(yè)<%= My.GetiPageSize %>條 共<%= My.GetTotalPage %>頁(yè) 頁(yè)碼:<%= My.GetFenYeJmp(false) %></td> 
</tr> 
</table>


asp 存儲(chǔ)過(guò)程分頁(yè)代碼

還有很多功能可以拓展,復(fù)雜的查詢、排序等,不一一演示了 
這個(gè)是使用到的asp類->Page.asp 

復(fù)制代碼代碼如下:


'******************************************************* 
'Page 分頁(yè)類 
'特點(diǎn):采用 not in 分頁(yè)輸出方法,需配合 sp_Page 存儲(chǔ)過(guò)程使用,速度比較快 
'輸入?yún)?shù) connstr:數(shù)據(jù)庫(kù)鏈接字符串 StrTable:要查詢的表 StrText:要查詢的字段 StrIndex:索引字段 
'可選參數(shù):(iPageSize:每頁(yè)記錄數(shù)量 StrWhere:條件語(yǔ)句 StrOrder:排序字段 StrSc:排序方法 ActionStr:From提交的查詢參數(shù)) 
'輸出參數(shù) rsArray:返回的記錄集數(shù)組 GetTotalNum:返回的總記錄數(shù) GetiPage:當(dāng)前頁(yè)碼 GetTotalPage:總頁(yè)數(shù) GetiPageSize:每頁(yè)顯示條數(shù) 
'輸出方法 GetFenYe():分頁(yè) GetFenYeJmp(inForm):帶跳轉(zhuǎn)的分頁(yè) 
'作者:六月雨 QQ:44569457 整理時(shí)間:2008年9月27日 
'******************************************************* 
Class Page 
Private connstr '數(shù)據(jù)庫(kù)鏈接字符串 
Private iPage '當(dāng)前頁(yè)碼 
Private iPageSize '每頁(yè)記錄數(shù)量 
Private StrTable '要查詢的表 
Private StrText '要查詢的字段 
Private StrWhere '條件語(yǔ)句 
Private StrIndex '索引字段 
Private StrOrder '排序字段 
Private StrSc '排序方法 
Private ActionStr '翻頁(yè)鏈接字符 
Private Rs_dbs '記錄集名稱 
Private cmd 'cmd對(duì)象名稱 
Private rsArray '返回的記錄集數(shù)組 
Private TotalNum '返回的總記錄數(shù) 
Private Sub Class_Initialize() '初始化類 
iPageSize=10 
iPage=trim(Request("iPage")) 
ActionStr="" 
StrWhere="" 
StrOrder="" 
StrSc="" 
If (not IsNumeric(iPage)) Then 
iPage=1 
Else 
If iPage<1 then iPage=1 
If iPage>5000000 then iPage=1 
End If 
End Sub 
Private Sub Class_Terminate() '釋放類 
set Rs_dbs=nothing 
End Sub 
Public Property Let SetConnstr(svalue) '取得:數(shù)據(jù)庫(kù)鏈接字符串 
connstr=Lcase(svalue) 
End Property 
Public Property Let SetiPageSize(svalue) '取得:每頁(yè)記錄數(shù)量 
iPageSize=clng(svalue) 
End Property 
Public Property Let SetStrTable(svalue) '取得:SQL表名 
StrTable=Lcase(svalue) 
End Property 
Public Property Let SetStrText(svalue) '取得:SQL查詢的字段 
StrText=Lcase(svalue) 
End Property 
Public Property Let SetStrWhere(svalue) '取得:SQL條件字段 
StrWhere=Lcase(svalue) 
End Property 
Public Property Let SetStrIndex(svalue) '取得:索引字段 
StrIndex=Lcase(svalue) 
End Property 
Public Property Let SetStrOrder(svalue) '取得:排序字段 
StrOrder=Lcase(svalue) 
End Property 
Public Property Let SetStrSc(svalue) '取得:排序方法 
StrSc=Lcase(svalue) 
End Property 
Public Property Let SetActionStr(svalue) '取得:翻頁(yè)鏈接字符 
ActionStr=Lcase(svalue) 
End Property 
Private Function MadeOrderBy() '方法:組合Order By 語(yǔ)句 
dim TempStrOrder,TempStrSc,t 
if StrOrder<>"" and StrSc<>"" then 
TempStrOrder=split(StrOrder,",") 
TempStrSc=split(StrSc,",") 
if ubound(TempStrOrder)=ubound(TempStrSc) then 
for t=0 to ubound(TempStrOrder) 
if t=0 then 
MadeOrderBy=TempStrOrder(t)&" "&TempStrSc(t) 
else 
MadeOrderBy=MadeOrderBy&","&TempStrOrder(t)&" "&TempStrSc(t) 
end if 
next 
end if 
end if 
End Function 
Private Sub OpenRs() '方法:獲得記錄集 
Set Rs_dbs=Server.CreateObject("ADODB.RECORDSET") 
Set cmd = Server.CreateObject("ADODB.Command") 
with cmd 
.ActiveConnection = connstr '數(shù)據(jù)庫(kù)連接字串 
.CommandText = "sp_Page" '指定存儲(chǔ)過(guò)程名 
.CommandType = 4 '表明這是一個(gè)存儲(chǔ)過(guò)程 
.Prepared = true '要求將SQL命令先行編譯 
.Parameters.append .CreateParameter("@iPage",3,1,4,iPage) '指定頁(yè)數(shù) 
.Parameters.append .CreateParameter("@iPageSize",3,1,4,iPageSize) '每頁(yè)記錄數(shù) 
.Parameters.append .CreateParameter("@StrTable",200,1,200,StrTable) '分頁(yè)時(shí)要查詢的表名 
.Parameters.append .CreateParameter("@StrText",200,1,1000,StrText) '字段 
.Parameters.append .CreateParameter("@StrWhere",200,1,1000,StrWhere) '查詢條件where 中的條件語(yǔ)句 
.Parameters.append .CreateParameter("@StrIndex",200,1,30,StrIndex) '索引值 
.Parameters.append .CreateParameter("@StrOrder",200,1,100,MadeOrderBy()) '排序的字段 
.Parameters.Append .CreateParameter("@StrTotals",3,2,10) '總頁(yè)數(shù)output 
Set Rs_dbs = .Execute 
end with 
End Sub 
Public Property Get GetRs() '輸出:記錄集(數(shù)組方式) 
call OpenRs() 
If not (Rs_dbs.eof and Rs_dbs.bof ) then 
GetRs = Rs_dbs.GetRows() 
End If 
Rs_dbs.close 
TotalNum = cmd(7) 
set cmd = nothing 
End Property 
Public Property Get GetTotalNum '輸出:總記錄數(shù) 
GetTotalNum=TotalNum 
End Property 
Public Property Get GetTotalPage '輸出:總頁(yè)數(shù) 
If (TotalNum mod iPageSize)<>0 Then 
GetTotalPage=(TotalNum\iPageSize)+1 
Else 
GetTotalPage=(TotalNum\iPageSize) 
End If 
End Property 
Public Property Get GetiPageSize '輸出:每頁(yè)顯示條數(shù) 
GetiPageSize=iPageSize 
End Property 
Public Property Get GetiPage '輸出:當(dāng)前頁(yè)碼 
GetiPage=iPage 
End Property 
Private Function GetQueryUrl() '方法:獲得當(dāng)前URL 
dim UrlFile,Query,Querys,i 
UrlFile= Request.Servervariables("URL") 
Query= Request.Servervariables("QUERY_STRING") 
Querys=split(Query,"&") 
For i=0 to ubound(Querys) 
if trim(Querys(i))<>"" then 
If trim(Querys(i))=replace(trim(Querys(i)),"iPage=","") then 
GetQueryUrl=GetQueryUrl&Querys(i)&"&" 
End If 
End If 
Next 
if ActionStr="" then 
GetQueryUrl=UrlFile&"?"&GetQueryUrl 
else 
GetQueryUrl=UrlFile&"?"&ActionStr&"&"&GetQueryUrl 
end if 
End Function 
Public Property Get GetFenYe() '輸出:分頁(yè) 
If (iPage>=1) and (clng(iPage)<=clng(GetTotalPage)) then 
dim x,y,m,n,i,ActionUrL 
ActionUrL=GetQueryUrl() 
If iPage="" then iPage=1 
iPage=Clng(iPage) 
If TotalNum<>0 then 
x=TotalNum\iPageSize 
y=TotalNum mod iPageSize 
If y<>0 then x=x+1 '總頁(yè)數(shù) 
if iPage>5 then 
If (iPage+5)<=x then 
n=iPage-4 
m=iPage+5 
Else 
n=iPage-4 
m=x 
End If 
Else 
n=1 
m=10 
End If 
If x<=10 then 
If x<>1 then 
if iPage<>1 then 
Response.Write" <a href="&ActionUrL&"iPage="&(iPage-1)&">上一頁(yè)</a> " 
end if 
for i=1 to x 
if iPage=i then 
Response.Write(i) 
Else 
Response.Write" <a href="&ActionUrL&"iPage="&i&">["&i&"]</a> " 
End If 
next 
if iPage<>x then 
Response.Write" <a href="&ActionUrL&"iPage="&(iPage+1)&">下一頁(yè)</a> " 
end if 
End If 
Else 
If iPage>5 then 
Response.Write" <a href="&ActionUrL&"iPage=1>[首頁(yè)]</a> " 
End If 
If iPage<>1 then 
Response.Write" <a href="&ActionUrL&"iPage="&(iPage-1)&">上一頁(yè)</a> " 
end if 
for i=n to m 
if iPage>x then Exit For 
if iPage=i then 
Response.Write(i) 
Else 
Response.Write" <a href="&ActionUrL&"iPage="&i&">["&i&"]</a> " 
End If 
next 
if iPage<>x then 
Response.Write" <a href="&ActionUrL&"iPage="&(iPage+1)&">下一頁(yè)</a> " 
End If 
if (iPage+5)<x then 
Response.Write" <a href="&ActionUrL&"iPage="&x&">[尾頁(yè)]</a> " 
End If 
End If 
End If 
End If 
End Property 
Public Property Get GetFenYeJmp(inForm) '輸出:帶跳轉(zhuǎn)的分頁(yè) 
if inForm then 
response.Write(GetFenYe()&" <input name='iPage' type='text' value="&iPage&" id='iPage' size='3'> ") 
response.Write("<input type='submit' name='Submit' value='轉(zhuǎn)'>") 
else 
response.Write("<form name='Jmp' method='post' action="&GetQueryUrl()&">") 
response.Write(GetFenYe()&" <input name='iPage' type='text' value="&iPage&" id='iPage' size='3'>") 
response.Write("<input type='submit' name='Submit' value='轉(zhuǎn)'>") 
response.Write("</form>") 
end if 
End Property 
End Class


存儲(chǔ)過(guò)程 

復(fù)制代碼代碼如下:


begin 
set @Sql='select top '+str(@iPageSize)+' '+@StrText+' from '+@StrTable+' where '+@StrIndex+' not in (select top '+str(@iPageSize*(@iPaCREATE PROCEDURE [dbo].[sp_Page] 
@iPage int=1, --當(dāng)前頁(yè)碼 
@iPageSize int=10,--每頁(yè)條數(shù) 
@StrTable varchar(200),--查詢的表 
@StrText varchar(1000),--查詢的字段 
@StrWhere varchar(1000),--條件 
@StrIndex varchar(30),--索引 
@StrOrder varchar(100)='',--排序字段 
@StrTotals int output --返回總條數(shù) 
AS 
--定義變量 
declare @SqlCount nvarchar(2000) 
declare @Sql nvarchar(2000) 
declare @TempOrder nvarchar(1000) 
if @StrOrder<>"" 
begin 
set @TempOrder=' order by '+@StrOrder 
end 
else 
begin 
set @TempOrder='' 
end 
--組合sql語(yǔ)句 
if @iPage=1 
begin 
set @Sql='select top '+str(@iPageSize)+' '+@StrText+' from '+@StrTable+' where 1=1 '+@StrWhere+@TempOrder 
end 
else 
ge-1))+' '+@StrIndex+' from '+@StrTable+' where 1=1 '+@StrWhere+@TempOrder+') '+@StrWhere+@TempOrder 
end 
set @SqlCount='select @StrTotals=isnull(count(*),10000) from '+@StrTable+' where 1=1 '+@StrWhere 
--查詢總記錄數(shù)量 
exec sp_executesql @SqlCount,N'@StrTotals int output',@StrTotals output 
--執(zhí)行sql語(yǔ)句返回 
exec (@Sql) 
GO 

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 99久久伊人一区二区yy5099 | 国产成人精品999在线 | 国产a在线 | 国产综合欧美日韩视频一区 | 日本aaaaa高清免费看 | 亚洲第五色综合网啪啪 | 射逼视频 | 欧美一级视频在线观看 | 亚洲天天综合网 | 国内自拍网红在综合图区 | 亚洲视频在线免费 | 国产精品久久久久久久久齐齐 | 亚洲国产欧美在线人网站 | 精品国产一级毛片大全 | 视频在线观看入口一二三2021 | 狠狠操社区 | 亚洲精品在线免费观看视频 | 白丝打脚枪| 乌克兰黄色录像 | 2021国产麻豆剧传媒新片 | re99热| 男人的天堂va| 国产在线精品99一卡2卡 | 妇伦小说 | 亚洲一级特黄特黄的大片 | 精品国产成人AV在线看 | 国产在线麻豆波多野结衣 | 波多野结衣家庭教师 | 国产精品久久久久一区二区三区 | tubehdxx丝袜正片 | 亚洲精品短视频 | 小便japanesewctv | 激情乱文 | 性夜影院午夜看片 | 成人国产精品一级毛片视频 | 亚洲国产99在线精品一区二区 | 欧美成人v视频免费看 | 秋霞一级成人欧美理论 | 不卡视频一区二区 | 拔插拔插8x8x海外华人免费视频 | 欧美日韩国产另类一区二区三区 |