商城首页欢迎来到中国正版软件门户

您的位置: 首页 > 文章列表 > 编程开发 > asp中在JScript中使用RecordSet对象的GetRows

asp中在JScript中使用RecordSet对象的GetRows

  发布于2026-07-22 阅读(0)

扫一扫,手机访问

在ASP的世界里,VBScript一直是默认的脚本语言,用起来顺手,生态也成熟。但如果你偏爱JScript,也不是不行——只是得面对一些小麻烦。比如,RecordSet对象的GetRows方法,在VBScript里用得挺爽,换成JScript就得多绕几步。

先说说为什么要用GetRows。通常操作数据库离不开RecordSet对象,但如果讲究点性能,大家一般会把记录集转成数组——操作数组比逐条调用MoveNext快得多,而且拿到数组后能尽早释放RecordSet,内存占用也小,算是优化ASP的经典招数。

在VBScript里,GetRows返回的是一个二维数组,遍历起来很直观。比如有个表叫mytable,字段是idfirstsecond,代码大概长这样:

复制代码

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对象缓存起来。这样能省下不少数据库查询次数,对性能优化帮助挺大。当然,缓存策略要按实际场景来,别让用户读到过期数据就行。

本文转载于:https://www.jb51.net/article/8541.htm 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。

热门关注