• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    asp中在JScript中使用RecordSet对象的GetRows
    写ASP程序时,一般情况总是使用的VBScript,不过也不只是这一种选择,也可以用JScript。但在用JScript作为ASP的语言时,比用VBScript有一些小小的不方便,比如RecordSet的GetRows方法。
    在ASP中操作数据库,一般都要用到RecordSet对象,如果注重程序效率的话,可能就会用到RecordSet对象的GetRows方法,把记录集对象转换成数组,而操作数组在速度上将比用RecordSet对象的MoveNext方法快很多,而且可以在取出数组后尽早释放RecordSet对象,从而减少资源的占用,这也是优化ASP性能的一个方法。
    在VBScript里,用RecordSet.GetRows方法取到的是一个二维数组,里面的数据可以通过遍历数组的方式来取得。
    假设现在有一个数据库,其中有一个表名为mytable,有3个字段,名称分别为id,first,second。
    复制代码 代码如下:

    ' code by xujiwei
    ' http://www.xujiwei.cn/
    ' 定义变量
    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
        ' 注意,数组下标从0开始
        ' 显示数据库中数据
        Response.Write("ID: "data(0,i)", First: "data(1,i)_
            ", Second: "data(2,i)"br />")
    Next
    ' 关闭数据库连接,释放对象
    conn.Close()
    Set conn=Nothing
    %>

    但是在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;irecN;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;ilen;i++) {
            data[i]=new Array();
            sp=i*fieldslen;
            for(var j=0;jfieldslen;j++)
                data[i][j]=arr[sp+j];
        }
        return data;
    }
    /script>

    对于一些更新频率不高,而使用次数比较多的数据,可以在成功获取数据数组之后,用Application对象来缓存起来,从而减少对数据库的查询次数,一定程序程度上优化ASP的性能。
    转地址:http://www.xujiwei.cn/blog/?id=717
    您可能感兴趣的文章:
    • 用GetString提高ASP的速度
    • asp ADO GetString函数与用GetString来提高ASP的速度
    • 在asp中通过getrows实现数据库记录分页的一段代码
    • asp中通过getrows实现数据库记录分页的一段代码
    • asp中记录集对象的getrows和getstring用法分析
    上一篇:ASP问答集
    下一篇:oblog_4.6_SQL 语句
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

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