但是在JScript使用时,就会有一个问题,那就是JScript并没有二维数组,如果要用GetRows所获取的数据,必要将这个VBScript中的二维数组转换成JScript能识别的数组,即元素为数组的一个一维数组。
在JScript里,用GetRows方法获取的数组有一个toArray方法,可以转换成JScript中能用的数组,但是这个数组是一维的,也就是说,如果要像在VBScript一样使用的话,还需要我们自己来做转换。
查阅了MSDN及在网上搜索了相关的文章之后,我写了一个数组转换的函数用于在JScript中使用GetRows方法。
程序代码:
- <script language="JScript" runat="server">
- // code by xujiwei
- // http://www.xujiwei.cn/
- // 定义变量
- var conn,rs,vdata,data,recN,i;
- // 连接数据库
- conn=Server.CreateObject("ADODB.Connection");
- conn.Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+
- Server.MapPath("data.mdb"));
- // 获取记录集
- rs=conn.Execute("SELECT id,first,second FROM test");
- // 获取数据数组,并转换成为JScript中可用的数组类型
- vdata=rs.GetRows().toArray();
- // 获取数据表的字段数
- i=rs.Fields.Count;
- // 关闭记录集,释放对象
- rs.Close();
- rs=null;
- // 转换数组
- data=transArray(vdata,i);
- // 获取记录数
- recN=data.length;
- // 循环输出数据
- for(i=0;i<recN;i++) {
- // 注意,数组下标从0开始
- // 显示数据库中数据
- Response.Write("ID: "+data[i][0]+", First: "+data[i][1]+
- ", Second: "+data[i][2]+"<br />");
- }
- // 关闭数据库连接,释放对象
- conn.Close();
- conn=null;
- // 数组转换函数
- // by xujiwei
- // 参数:arr - GetRows方法得到的对象用toArray方法得到的数组
- // fieldslen - 数据表字段数
- function transArray(arr,fieldslen) {
- var len=arr.length/fieldslen,data=[],sp;
- for(var i=0;i<len;i++) {
- data[i]=new Array();
- sp=i*fieldslen;
- for(var j=0;j<fieldslen;j++)
- data[i][j]=arr[sp+j];
- }
- return data;
- }
- </script>
对于一些更新频率不高,而使用次数比较多的数据,可以在成功获取数据数组之后,用Application对象来缓存起来,从而减少对数据库的查询次数,一定程序程度上优化ASP的性能。
版权声明:未作特别说明的内容可以转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本声明。本文地址:http://www.xujiwei.cn/blog/?id=717
阅读关于
ASP vbscript JS RecordSet 对象 GetRows 的全部文章
热卖推荐:
手机 诺基亚 MP5 电脑包 双卡双待 手机链 U盘 笔记本电脑