- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章Access 2000 数据库 80 万记录通用快速分页类由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
代码本人优化过,测试通过 。
主要思路:用一条语句统计(Count)出记录数(而不在查询时获得RecordCount属性),缓存在Cookies中,跳转时就不用再次统计.使用ADO的AbsolutePage属性进行页面跳转即可.为方便调用而写成类,代码主要地方已有说明 。
硬件环境:AMDAthlonXP2600+,256DDR 。
软件环境:MSWindows2000AdvancedServer+IIS5.0+Access2000+IE6.0 。
测试结果:初次运行在250(首页)-400(末页)毫秒,(记录数缓存后)在页面间跳转稳定在47毫秒以下.第1页跳到最后一页不多于350毫秒 。
适用范围:用于普通分页.不适用于有较复杂的查询时:如条件为"[Title]Like’%最爱%’",查询的时间大大增加,就算Title字段作了索引也没用.:( 。
- <%
- Dim intDateStart
- intDateStart = Timer()
- Rem ## 打开数据库连接
- Rem #################################################################
- function f__OpenConn()
- Dim strDbPath
- Dim connstr
- strDbPath = "fenye/db.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 ## 关闭数据库连接
- Rem #################################################################
- function f__CloseConn()
- If IsObject(conn) Then
- conn.close
- End If
- Set conn = nothing
- End function
- Rem #################################################################
- Rem 获得执行时间
- Rem #################################################################
- function getTimeOver(iflag)
- Dim tTimeOver
- If iflag = 1 Then
- tTimeOver = FormatNumber(Timer() - intDateStart, 6, true)
- getTimeOver = " 执行时间: " & tTimeOver & " 秒"
- Else
- tTimeOver = FormatNumber((Timer() - intDateStart) * 1000, 3, true)
- getTimeOver = " 执行时间: " & 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 ## 保存记录数的 Cookies 变量
- Public Property Let strCookiesName(Value)
- sstrCookiesName = Value
- End Property
- Rem ## 转向地址
- 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 ## 用于统计记录数的字段
- Public Property Let strPrimaryKey(Value)
- sstrPrimaryKey = Value
- End Property
- Rem ## 每页显示的记录条数
- Public Property Let intPageSize(Value)
- sintPageSize = toNum(Value, 20)
- End Property
- Rem ## 数据库连接对象
- Public Property Let objConn(Value)
- Set sobjConn = Value
- End Property
- Rem ## 当前页
- Public Property Let intPageNow(Value)
- sintPageNow = toNum(Value, 1)
- End Property
- Rem ## 页面参数
- Public Property Let strPageVar(Value)
- sstrPageVar = Value
- End Property
- Rem ## 是否刷新. 1 为刷新, 其他值则不刷新
- Public Property Let intRefresh(Value)
- sintRefresh = toNum(Value, 0)
- End Property
- Rem ## 获得当前页
- Public Property Get intPageNow()
- intPageNow = singPageNow
- End Property
- Rem ## 分页信息
- Public Property Get strPageInfo()
- strPageInfo = sstrPageInfo
- End Property
- Rem ## 取得记录集, 二维数组或字串, 在进行循环输出时必须用 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 ## 初始化记录数
- 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 ## 初始化分页信息
- 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 = "首页 上一页"
- Else
- sstrPageInfo = sstrPageInfo & " <a href=""" & surl & "1"">首页</a>"
- sstrPageInfo = sstrPageInfo & " <a href=""" & surl & (sintPageNow - 1) & """>上一页</a>"
- End If
- If sintPageMax - sintPageNow < 1 then
- sstrPageInfo = sstrPageInfo & " 下一页 末页 "
- Else
- sstrPageInfo = sstrPageInfo & " <a href=""" & surl & (sintPageNow + 1) & """>下一页</a> "
- sstrPageInfo = sstrPageInfo & " <a href=""" & surl & sintPageMax & """>末页</a> "
- End If
- sstrPageInfo = sstrPageInfo & " 页次:<strong><font color=""#990000"">" & sintPageNow & "</font> / " & sintPageMax & " </strong>"
- sstrPageInfo = sstrPageInfo & " 共 <strong>" & sintRecordCount & "</strong> 条记录 <strong>" & sintPageSize & "</strong> 条/页 "
- End Sub
- Rem ## 长整数转换
- 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 = "[table1]"
- clsRecordInfo.strPageUrl = strLocalUrl
- clsRecordInfo.strFieldsList = "[ID], [aaaa], [bbbb], [cccc]"
- 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>分页测试</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> <%= 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> <%= arrRecordInfo(0, i)%></td>
- <td> <%= arrRecordInfo(1, i)%></td>
- <td> <%= arrRecordInfo(2, i)%></td>
- </tr>
- <%
- Next
- End If
- %>
- </table>
- </div>
- <table width="100%" border="0" cellspacing="0" cellpadding="4">
- <tr>
- <td> <%= strPageInfo%></td>
- </tr>
- </table>
- <table width="100%" border="0" cellspacing="0" cellpadding="4">
- <tr>
- <td align="center"> <%= getTimeOver(1)%></td>
- </tr>
- </table>
- </body>
- </html>
。
。
。
。
。
。
。
。
最后此篇关于Access 2000 数据库 80 万记录通用快速分页类的文章就讲到这里了,如果你想了解更多关于Access 2000 数据库 80 万记录通用快速分页类的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
我的问题是如何在 python 中创建一个简单的数据库。我的例子是: User = { 'Name' : {'Firstname', 'Lastname'}, 'Address' : {'Street
我需要创建一个与远程数据库链接的应用程序! mysql 是最好的解决方案吗? Sqlite 是唯一的本地解决方案吗? 我使用下面的方法,我想知道它是否是最好的方法! NSString *evento
给定两台 MySQL 服务器,一台本地,一台远程。两者都有一个包含表 bohica 的数据库 foobar。本地服务器定义了用户 'myadmin'@'%' 和 'myadmin'@'localhos
我有以下灵活的搜索查询 Select {vt:code},{vt:productcode},{vw:code},{vw:productcode} from {abcd AS vt JOIN wxyz
好吧,我的电脑开始运行有点缓慢,所以我重置了 Windows,保留了我的文件。因为我的大脑还没有打开,所以我忘记事先备份我的 MySQL 数据库。我仍然拥有所有原始文件,因此我实际上仍然拥有数据库,但
如何将我的 Access 数据库 (.accdb) 转换为 SQLite 数据库 (.sqlite)? 请,任何帮助将不胜感激。 最佳答案 1)如果要转换 db 的结构,则应使用任何 DB 建模工具:
系统检查发现了一些问题: 警告:?:(mysql.W002)未为数据库连接“默认”设置 MySQL 严格模式 提示:MySQL 的严格模式通过将警告升级为错误来修复 MySQL 中的许多数据完整性问题
系统检查发现了一些问题: 警告:?:(mysql.W002)未为数据库连接“默认”设置 MySQL 严格模式 提示:MySQL 的严格模式通过将警告升级为错误来修复 MySQL 中的许多数据完整性问题
我想在相同的 phonegap 应用程序中使用 android 数据库。 更多说明: 我创建了 phonegap 应用程序,但 phonegap 应用程序不支持服务,所以我们已经在 java 中为 a
Time Tracker function clock() { var mytime = new Date(); var seconds
我需要在现有项目上实现一些事件的显示。我无法更改数据库结构。 在我的 Controller 中,我(从 ajax 请求)传递了一个时间戳,并且我需要显示之前的 8 个事件。因此,如果时间戳是(转换后)
我有一个可以收集和显示各种测量值的产品(不会详细介绍)。正如人们所期望的那样,显示部分是一个数据库+建立在其之上的网站(使用 Symfony)。 但是,我们可能还会创建一个 API 来向第三方公开数据
我们将 SQL Server 从 Azure VM 迁移到 Azure SQL 数据库。 Azure VM 为 DS2_V2、2 核、7GB RAM、最大 6400 IOPS Azure SQL 数据
我正在开发一个使用 MongoDB 数据库的程序,但我想问在通过 Java 执行 SQL 时是否可以使用内部数据库进行测试,例如 H2? 最佳答案 你可以尝试使用Testcontainers Test
已关闭。此问题不符合Stack Overflow guidelines 。目前不接受答案。 已关闭 9 年前。 此问题似乎与 a specific programming problem, a sof
我正在尝试使用 MSI 身份验证(无需用户名和密码)从 Azure 机器学习服务连接 Azure SQL 数据库。 我正在尝试在 Azure 机器学习服务上建立机器学习模型,目的是我需要数据,这就是我
我在我的 MySQL 数据库中使用这个查询来查找 my_column 不为空的所有行: SELECT * FROM my_table WHERE my_column != ""; 不幸的是,许多行在
我有那个基地:http://sqlfiddle.com/#!2/e5a24/2这是 WordPress 默认模式的简写。我已经删除了该示例不需要的字段。 如您所见,我的结果是“类别 1”的两倍。我喜欢
我有一张这样的 table : mysql> select * from users; +--------+----------+------------+-----------+ | userid
我有表: CREATE TABLE IF NOT EXISTS `category` ( `id` int(11) NOT NULL, `name` varchar(255) NOT NULL
我是一名优秀的程序员,十分优秀!