发布于2026-07-22 阅读(0)
扫一扫,手机访问
在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对象缓存起来。这样能省下不少数据库查询次数,对性能优化帮助挺大。当然,缓存策略要按实际场景来,别让用户读到过期数据就行。
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
8