六月婷婷综合激情-六月婷婷综合-六月婷婷在线观看-六月婷婷在线-亚洲黄色在线网站-亚洲黄色在线观看网站

明輝手游網(wǎng)中心:是一個(gè)免費(fèi)提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺(tái)!

Access2000數(shù)據(jù)庫(kù)80萬(wàn)記錄通用迅速分頁(yè)類

[摘要]主要思路: 用一條語(yǔ)句統(tǒng)計(jì)(Count)出記錄數(shù)(而不在查詢時(shí)獲得 RecordCount 屬性), 緩存在 Cookies 中, 跳轉(zhuǎn)時(shí)就不用再次統(tǒng)計(jì). 使用 ADO 的 AbsolutePage 屬性進(jìn)行頁(yè)面跳轉(zhuǎn)即可. 為方便調(diào)用而寫成類, 代碼主要地方已有說(shuō)明硬件環(huán)境: AMD Athlon...

    主要思路: 用一條語(yǔ)句統(tǒng)計(jì)(Count)出記錄數(shù)(而不在查詢時(shí)獲得 RecordCount 屬性), 緩存在 Cookies 中, 跳轉(zhuǎn)時(shí)就不用再次統(tǒng)計(jì). 使用 ADO 的 AbsolutePage 屬性進(jìn)行頁(yè)面跳轉(zhuǎn)即可. 為方便調(diào)用而寫成類, 代碼主要地方已有說(shuō)明

硬件環(huán)境: AMD Athlon XP 2600+, 256 DDR
軟件環(huán)境: MS Windows 2000 Advanced Server + IIS 5.0 + Access 2000 + IE 6.0
測(cè)試結(jié)果: 初次運(yùn)行在 250(首頁(yè)) - 400(末頁(yè))毫秒, (記錄數(shù)緩存后)在頁(yè)面間跳轉(zhuǎn)穩(wěn)定在 47 毫秒以下.第1頁(yè)跳到最后一頁(yè)不多于 350 毫秒

適用范圍: 用于普通分頁(yè). 不適用于有較復(fù)雜的查詢時(shí): 如條件為"[Title] Like '%最愛%'", 查詢的時(shí)間大大增加, 就算 Title 字段作了索引也沒(méi)用. :(
<%@LANGUAGE = "VBScript" CODEPAGE="936"%>
<%Option Explicit%>
<%
 Dim intDateStart
 intDateStart = Timer()
 Rem ## 打開數(shù)據(jù)庫(kù)連接
 Rem #################################################################
  function f__OpenConn()
   Dim strDbPath
   Dim connstr
   strDbPath = "../db/test.mdb"
   connstr  = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="
   connstr  = connstr & Server.MapPath(strDbPath)
   Set conn  = Server.CreateObject("Adodb.Connection")
   conn.open connstr
  End function
 Rem #################################################################
 
 Rem ## 關(guān)閉數(shù)據(jù)庫(kù)連接
 Rem #################################################################
  function f__CloseConn()
   If IsObject(conn) Then
    conn.close
   End If
   Set conn = nothing
  End function
 Rem #################################################################
 Rem 獲得執(zhí)行時(shí)間
 Rem #################################################################
 function getTimeOver(iflag)
  Dim tTimeOver
  If iflag = 1 Then
   tTimeOver = FormatNumber(Timer() - intDateStart, 6, true)
   getTimeOver = " 執(zhí)行時(shí)間: " & tTimeOver & " 秒"
  Else
   tTimeOver = FormatNumber((Timer() - intDateStart) * 1000, 3, true)
   getTimeOver = " 執(zhí)行時(shí)間: " & tTimeOver & " 毫秒"
  End If
 End function
 Rem #################################################################
 Class Cls_PageView
  Private sbooInitState
  Private sstrCookiesName
  Private sstrPageUrl
  Private sstrPageVar
  Private sstrTableName
  Private sstrFieldsList
  Private sstrCondiction
  Private sstrOrderList
  Private sstrPrimaryKey
  Private sintRefresh
 
  Private sintRecordCount
  Private sintPageSize
  Private sintPageNow
  Private sintPageMax
 
  Private sobjConn
 
  Private sstrPageInfo
 
  Private Sub Class_Initialize
   Call ClearVars()
  End Sub
  
  Private Sub class_terminate()
   Set sobjConn = nothing
  End Sub
 
  Public Sub ClearVars()
   sbooInitState = False
   sstrCookiesName = ""
   sstrPageUrl = ""
   sstrPageVar = "page"
   sstrTableName = ""
   sstrFieldsList = ""
   sstrCondiction = ""
   sstrOrderList = ""
   sstrPrimaryKey = ""
   sintRefresh = 0
  
   sintRecordCount = 0
   sintPageSize = 0
   sintPageNow = 0
   sintPageMax = 0
  End Sub
 
  Rem ## 保存記錄數(shù)的 Cookies 變量
  Public Property Let strCookiesName(Value)
   sstrCookiesName = Value
  End Property
 
  Rem ## 轉(zhuǎn)向地址
  Public Property Let strPageUrl(Value)
   sstrPageUrl = Value
  End Property
 
  Rem ## 表名
  Public Property Let strTableName(Value)
   sstrTableName = Value
  End Property
 
  Rem ## 字段列表
  Public Property Let strFieldsList(Value)
   sstrFieldsList = Value
  End Property
 
  Rem ## 查詢條件
  Public Property Let strCondiction(Value)
   If Value <> "" Then
    sstrCondiction = " WHERE " & Value
   Else
    sstrCondiction = ""
   End If
  End Property
 
  Rem ## 排序字段, 如: [ID] ASC, [CreateDateTime] DESC
  Public Property Let strOrderList(Value)
   If Value <> "" Then
    sstrOrderList = " ORDER BY " & Value
   Else
    sstrOrderList = ""
   End If
  End Property
 
  Rem ## 用于統(tǒng)計(jì)記錄數(shù)的字段
  Public Property Let strPrimaryKey(Value)
   sstrPrimaryKey = Value
  End Property
 
  Rem ## 每頁(yè)顯示的記錄條數(shù)
  Public Property Let intPageSize(Value)
   sintPageSize = toNum(Value, 20)
  End Property
 
  Rem ## 數(shù)據(jù)庫(kù)連接對(duì)象
  Public Property Let objConn(Value)
   Set sobjConn = Value
  End Property
 
  Rem ## 當(dāng)前頁(yè)
  Public Property Let intPageNow(Value)
   sintPageNow = toNum(Value, 1)
  End Property
 
  Rem ## 頁(yè)面參數(shù)
  Public Property Let strPageVar(Value)
   sstrPageVar = Value
  End Property
 
  Rem ## 是否刷新. 1 為刷新, 其他值則不刷新
  Public Property Let intRefresh(Value)
   sintRefresh = toNum(Value, 0)
  End Property
 
  Rem ## 獲得當(dāng)前頁(yè)
  Public Property Get intPageNow()
   intPageNow = singPageNow
  End Property
 
  Rem ## 分頁(yè)信息
  Public Property Get strPageInfo()
   strPageInfo = sstrPageInfo
  End Property
 
  Rem ## 取得記錄集, 二維數(shù)組或字串, 在進(jìn)行循環(huán)輸出時(shí)必須用 IsArray() 判斷
  Public Property Get arrRecordInfo()
   If Not sbooInitState Then
    Exit Property
   End If
  
   Dim rs, sql
   sql = "SELECT " & sstrFieldsList & _
    " FROM " & sstrTableName & _
    sstrCondiction & _
    sstrOrderList
  
   Set rs = Server.CreateObject("Adodb.RecordSet")
   rs.open sql, sobjConn, 1, 1
   If Not(rs.eof or rs.bof) Then
    rs.PageSize = sintPageSize
    rs.AbsolutePage = sintPageNow
    If Not(rs.eof or rs.bof) Then
     arrRecordInfo = rs.getrows(sintPageSize)
    Else
     arrRecordInfo = ""
    End If
   Else
    arrRecordInfo = ""
   End If
   rs.close
   Set rs = nothing
  End Property
 
  Rem ## 初始化記錄數(shù)
  Private Sub InitRecordCount()
   sintRecordCount = 0
   If Not(sbooInitState) Then Exit Sub
   Dim sintTmp
   sintTmp = toNum(request.Cookies("_xp_" & sstrCookiesName), -1)
   If ((sintTmp < 0) Or (sintRefresh = 1))Then
    Dim sql, rs
    sql = "SELECT COUNT(" & sstrPrimaryKey & ")" & _
     " FROM " & sstrTableName & _
     sstrCondiction
    Set rs = sobjConn.execute(sql)
    If rs.eof or rs.bof Then
     sintTmp = 0
    Else
     sintTmp = rs(0)
    End If
    sintRecordCount = sintTmp
   
    response.Cookies("_xp_" & sstrCookiesName) = sintTmp
   Else
    sintRecordCount = sintTmp
   End If
  End Sub
 
  Rem ## 初始化分頁(yè)信息
  Private Sub InitPageInfo()
   sstrPageInfo = ""
   If Not(sbooInitState) Then Exit Sub
  
   Dim surl  
   surl = sstrPageUrl  
   If Instr(1, surl, "?", 1) > 0 Then
    surl = surl & "&" & sstrPageVar & "="
   Else
    surl = surl & "?" & sstrPageVar & "="
   End If
  
   If sintPageNow <= 0 Then sintPageNow = 1
   If sintRecordCount mod sintPageSize = 0 Then
    sintPageMax = sintRecordCount \ sintPageSize
   Else
    sintPageMax = sintRecordCount \ sintPageSize + 1
   End If
   If sintPageNow > sintPageMax Then sintPageNow = sintPageMax
  
   If sintPageNow <= 1 then
    sstrPageInfo = "首頁(yè) 上一頁(yè)"
   Else
    sstrPageInfo = sstrPageInfo & " <a href=""" & surl & "1"">首頁(yè)</a>"
    sstrPageInfo = sstrPageInfo & " <a href=""" & surl & (sintPageNow - 1) & """>上一頁(yè)</a>"
   End If
  
   If sintPageMax - sintPageNow < 1 then
    sstrPageInfo = sstrPageInfo & " 下一頁(yè) 末頁(yè) "
   Else
    sstrPageInfo = sstrPageInfo & " <a href=""" & surl & (sintPageNow + 1) & """>下一頁(yè)</a> "
    sstrPageInfo = sstrPageInfo & " <a href=""" & surl & sintPageMax & """>末頁(yè)</a> "
   End If
  
   sstrPageInfo = sstrPageInfo & " 頁(yè)次:<strong><font color=""#990000"">" & sintPageNow & "</font> / " & sintPageMax & " </strong>"
   sstrPageInfo = sstrPageInfo & " 共 <strong>" & sintRecordCount & "</strong> 條記錄 <strong>" & sintPageSize & "</strong> 條/頁(yè) "
  End Sub
 
  Rem ## 長(zhǎng)整數(shù)轉(zhuǎn)換
  Private function toNum(s, Default)
   s = s & ""
   If s <> "" And IsNumeric(s) Then
    toNum = CLng(s)
   Else
    toNum = Default
   End If
  End function
 
  Rem ## 類初始化
  Public Sub InitClass()
   sbooInitState = True
   If Not(IsObject(sobjConn)) Then sbooInitState = False
   Call InitRecordCount()
   Call InitPageInfo()  
  End Sub
 End Class
 Dim strLocalUrl
 strLocalUrl = request.ServerVariables("SCRIPT_NAME")
 
 Dim intPageNow
 intPageNow = request.QueryString("page")
 
 Dim intPageSize, strPageInfo
 intPageSize = 30
 
 Dim arrRecordInfo, i
 Dim Conn
 f__OpenConn
  Dim clsRecordInfo
  Set clsRecordInfo = New Cls_PageView
 
  clsRecordInfo.strTableName = "[myTable]"
  clsRecordInfo.strPageUrl = strLocalUrl
  clsRecordInfo.strFieldsList = "[ID], [Title], [LastTime]"
  clsRecordInfo.strCondiction = "[ID] < 10000"
  clsRecordInfo.strOrderList = "[ID] ASC"
  clsRecordInfo.strPrimaryKey = "[ID]"
  clsRecordInfo.intPageSize = 20
  clsRecordInfo.intPageNow = intPageNow
 
  clsRecordInfo.strCookiesName = "RecordCount"
  clsRecordInfo.strPageVar = "page"
 
  clsRecordInfo.intRefresh = 0
  clsRecordInfo.objConn = Conn
  clsRecordInfo.InitClass
 
  arrRecordInfo = clsRecordInfo.arrRecordInfo
  strPageInfo = clsRecordInfo.strPageInfo
  Set clsRecordInfo = nothing
 f__CloseConn
%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>分頁(yè)測(cè)試</title>
<style type="text/css">
<!--
.PageView {
 font-size: 12px;
}
.PageView td {
 border-right-style: solid;
 border-bottom-style: solid;
 border-right-color: #E0E0E0;
 border-bottom-color: #E0E0E0;
 border-right-width: 1px;
 border-bottom-width: 1px;
}
.PageView table {
 border-left-style: solid;
 border-top-style: solid;
 border-left-color: #E0E0E0;
 border-top-color: #E0E0E0;
 border-top-width: 1px;
 border-left-width: 1px;
}
tr.Header {
 background: #EFF7FF;
 font-size: 14px;
 font-weight: bold;
 line-height: 120%;
 text-align: center;
}
-->
</style>
<style type="text/css">
<!--
body {
 font-size: 12px;
}
a:link {
 color: #993300;
 text-decoration: none;
}
a:visited {
 color: #003366;
 text-decoration: none;
}
a:hover {
 color: #0066CC;
 text-decoration: underline;
}
a:active {
 color: #000000;
 text-decoration: none;
}
table {
 font-size: 12px;
}
-->
</style>
</head>
<body>
<table width="100%" border="0" cellspacing="0" cellpadding="4">
  <tr>
  <td>&nbsp;<%= strPageInfo%></td>
 </tr>
</table>
<div class="PageView">
  <table width="100%" border="0" cellspacing="0" cellpadding="4">
    <tr class="Header">
    <td>ID</td>
    <td>描述</td>
    <td>日期</td>
  </tr>
 <%
  If IsArray(arrRecordInfo) Then
   For i = 0 to UBound(arrRecordInfo, 2)
 %>
  <tr>
    <td>&nbsp;<%= arrRecordInfo(0, i)%></td>
    <td>&nbsp;<%= arrRecordInfo(1, i)%></td>
    <td>&nbsp;<%= arrRecordInfo(2, i)%></td>
  </tr>
 <%
   Next
  End If
 %>
</table>
</div>
<table width="100%" border="0" cellspacing="0" cellpadding="4">
  <tr>
  <td>&nbsp;<%= strPageInfo%></td>
 </tr>
</table>
<table width="100%" border="0" cellspacing="0" cellpadding="4">
  <tr>
    <td align="center">&nbsp;<%= getTimeOver(1)%></td>
  </tr>
</table>
</body>
</html>




主站蜘蛛池模板: 亚洲欧美在线观看一区二区 | 色婷婷综合激情视频免费看 | 日本免费观看网站 | 在线亚州| 性网站免费| 婷婷六月天激情 | 亚洲欧美成aⅴ人在线观看 亚洲欧美不卡 | 色无极在线 | 青草草| 欧美午夜一区 | 日韩第一页在线 | 欧洲97色综合成人网 | 日本视频一区二区三区 | 欧美特黄一级片 | 亚洲精品福利 | 色噜噜色偷偷男人的天堂 | 日韩三级毛片 | 亚州视频一区二区 | 三级自拍| 日本欧美高清全视频 | 亚洲午夜久久影院 | 日韩 欧美 综合 在线 制服 | 人人揉人人爽五月天视频 | 亚洲视频国产视频 | 最近更新在线中文字幕一页 | 欧美亚洲国产日韩一区二区三区 | 天天做天天爽爽快快 | 天天做天天操 | 四虎国产精品免费久久影院 | 色老头网站久久网 | 综合久久久| 在线视频观看亚洲 | 综合色久七七综合七七蜜芽 | 天天在线综合网 | 中文字幕日韩精品在线 | 小情侣旅馆内无套啪啪 | 天天做天天欢天天爽 | 天天爱天天色 | 色综合久久天天综合绕观看 | 亚洲主播 | 青青青国产视频 |