asp中在JScript中使用RecordSet对象的GetRows
在ASP的JScript中,RecordSet对象的GetRows方法返回二维数组,需转换为元素为数组的一维数组。可通过toArray方法获取长串数据,再按字段数分割重组,以提高性能并释放记录集。
在ASP的世界里,VBScript一直是默认的脚本语言,用起来顺手,生态也成熟。但如果你偏爱JScript,也不是不行——只是得面对一些小麻烦。比如,RecordSet对象的GetRows方法,在VBScript里用得挺爽,换成JScript就得多绕几步。
先说说为什么要用GetRows。通常操作数据库离不开RecordSet对象,但如果讲究点性能,大家一般会把记录集转成数组——操作数组比逐条调用MoveNext快得多,而且拿到数组后能尽早释放RecordSet,内存占用也小,算是优化ASP的经典招数。
在VBScript里,GetRows返回的是一个二维数组,遍历起来很直观。比如有个表叫mytable,字段是id、first、second,代码大概长这样:
复制代码
Dim conn, rs, data, recN, i
Set conn = Server.CreateObject("ADODB.Connection")
conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("data.mdb")
Set rs = conn.Execute("SELECT id, first, second FROM mytable")
data = rs.GetRows()
rs.Close()
Set rs = Nothing
recN = UBound(data, 2)
For i = 0 To recN
Response.Write("ID: " & data(0, i) & ", First: " & data(1, i) & ", Second: " & data(2, i) & "
")
Next
conn.Close()
Set conn = Nothing
但切换到JScript时问题就来了——JScript没有真正的二维数组。如果硬要把GetRows的结果拿过来用,就得想办法把这个VBScript风格的二维数组转成JScript能理解的格式,也就是一个元素为数组的一维数组。
好在GetRows返回的对象有一个toArray方法,可以在JScript里转成可用的一维数组。不过转完之后数据变成了一条长串,想按字段来取还得自己再加工。翻了一遍MSDN和网上相关文章后,整理出这么一个转换函数:
复制代码
这个函数的思路很简单:先算出一共有多少条记录(len = arr.length / fieldslen),然后按字段数分割一维数组,重新组装成二维结构。前面那个i=rs.Fields.Count是为了获取字段数,这样函数就能通用,不硬编码。
最后提一句——如果有些数据更新频率不高,但被反复查询,那拿到数组之后不妨用Application对象缓存起来。这样能省下不少数据库查询次数,对性能优化帮助挺大。当然,缓存策略要按实际场景来,别让用户读到过期数据就行。
Photoshop 2026 是 Adobe 推出的专业图像处理与视觉设计软件,支持 Windows、macOS 和 iPad 等平台,广泛应用于摄影修图、电商设计、平面海报、数字绘画及视觉合成等创作场景。
Blender 是一款免费开源、跨平台的专业 3D 创作软件,集建模、动画、渲染、视频编辑与视觉合成等功能于一体,广泛应用于影视动画、游戏设计和建筑可视化等领域。软件支持 Cycles 物理渲染器与 Eevee 实时渲染引擎,并提供多边形建模、骨骼绑定、物理模拟等专业工具。Blender 兼容 Windows、macOS 和 Linux 系统,安装包轻巧、运行流畅,依托活跃的全球开发者社区持续更新,是从初学者到专业创作者都值得选择的正版 3D 创作工具。
Photoshop 2026 是 Adobe 推出的专业图像处理与视觉设计软件,支持 Windows、macOS 和 iPad 等平台,广泛应用于摄影修图、电商设计、平面海报、数字绘画及视觉合成等创作场景。
Blender 是一款免费开源、跨平台的专业 3D 创作软件,集建模、动画、渲染、视频编辑与视觉合成等功能于一体,广泛应用于影视动画、游戏设计和建筑可视化等领域。软件支持 Cycles 物理渲染器与 Eevee 实时渲染引擎,并提供多边形建模、骨骼绑定、物理模拟等专业工具。Blender 兼容 Windows、macOS 和 Linux 系统,安装包轻巧、运行流畅,依托活跃的全球开发者社区持续更新,是从初学者到专业创作者都值得选择的正版 3D 创作工具。















