手机
当前位置:查字典教程网 >编程开发 >编程10000问 >asp中在JScript中使用RecordSet对象的GetRows
asp中在JScript中使用RecordSet对象的GetRows
摘要:写ASP程序时,一般情况总是使用的VBScript,不过也不只是这一种选择,也可以用JScript。但在用JScript作为ASP的语言时,...

写ASP程序时,一般情况总是使用的VBScript,不过也不只是这一种选择,也可以用JScript。但在用JScript作为ASP的语言时,比用VBScript有一些小小的不方便,比如RecordSet的GetRows方法。

在ASP中操作数据库,一般都要用到RecordSet对象,如果注重程序效率的话,可能就会用到RecordSet对象的GetRows方法,把记录集对象转换成数组,而操作数组在速度上将比用RecordSet对象的MoveNext方法快很多,而且可以在取出数组后尽早释放RecordSet对象,从而减少资源的占用,这也是优化ASP性能的一个方法。

在VBScript里,用RecordSet.GetRows方法取到的是一个二维数组,里面的数据可以通过遍历数组的方式来取得。

假设现在有一个数据库,其中有一个表名为mytable,有3个字段,名称分别为id,first,second。

复制代码 代码如下:

'codebyxujiwei

'http://www.xujiwei.cn/

'定义变量

Dimconn,rs,data,recN,i

'连接数据库

Setconn=Server.CreateObject("ADODB.Connection")

conn.Open"Provider=Microsoft.Jet.OLEDB.4.0;DataSource="&_

Server.MapPath("data.mdb")

'获取记录集

Setrs=conn.Execute("SELECTid,first,secondFROMmytable")

'获取数据数组

data=rs.GetRows()

'关闭记录集,释放对象

rs.Close()

Setrs=Nothing

'获取记录数

recN=UBound(data,2)

'循环输出数据

Fori=0TorecN

'注意,数组下标从0开始

'显示数据库中数据

Response.Write("ID:"&data(0,i)&",First:"&data(1,i)&_

",Second:"&data(2,i)&"<br/>")

Next

'关闭数据库连接,释放对象

conn.Close()

Setconn=Nothing

%>

但是在JScript使用时,就会有一个问题,那就是JScript并没有二维数组,如果要用GetRows所获取的数据,必要将这个VBScript中的二维数组转换成JScript能识别的数组,即元素为数组的一个一维数组。

在JScript里,用GetRows方法获取的数组有一个toArray方法,可以转换成JScript中能用的数组,但是这个数组是一维的,也就是说,如果要像在VBScript一样使用的话,还需要我们自己来做转换。

查阅了MSDN及在网上搜索了相关的文章之后,我写了一个数组转换的函数用于在JScript中使用GetRows方法。

复制代码 代码如下:

<scriptlanguage="JScript"runat="server">

//codebyxujiwei

//http://www.xujiwei.cn/

//定义变量

varconn,rs,vdata,data,recN,i;

//连接数据库

conn=Server.CreateObject("ADODB.Connection");

conn.Open("Provider=Microsoft.Jet.OLEDB.4.0;DataSource="+

Server.MapPath("data.mdb"));

//获取记录集

rs=conn.Execute("SELECTid,first,secondFROMtest");

//获取数据数组,并转换成为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;

//数组转换函数

//byxujiwei

//参数:arr-GetRows方法得到的对象用toArray方法得到的数组

//fieldslen-数据表字段数

functiontransArray(arr,fieldslen){

varlen=arr.length/fieldslen,data=[],sp;

for(vari=0;i<len;i++){

data[i]=newArray();

sp=i*fieldslen;

for(varj=0;j<fieldslen;j++)

data[i][j]=arr[sp+j];

}

returndata;

}

</script>

对于一些更新频率不高,而使用次数比较多的数据,可以在成功获取数据数组之后,用Application对象来缓存起来,从而减少对数据库的查询次数,一定程序程度上优化ASP的性能。

转地址:http://www.xujiwei.cn/blog/?id=717

【asp中在JScript中使用RecordSet对象的GetRows】相关文章:

如何获知页面上的图象的实际尺寸?

不用Global.asa也能实现统计在线人数吗?

如何用数据库制作一个多用户版的计数器?

如何把Recordset转换成彩色的XML文件

如何实现电子邮件的自动发送?

如何用ASP发送带附件的邮件?

ASP问答集

如何判断电子邮件的地址格式是否正确?

如何在ADSI中查询用户属性?

如何将访问者数目周期性地保存?

上一篇: ASP问答集
精品推荐
分类导航