用数组方法显示数据库中数据
作者:佚名 文章来源:网络 更新时间
:2007-5-30 15:27:14
用数组方法显示数据库中数据
首先,我们先要说说为什么要用数组显示数据,让我用一个简单的例子来说明:
先让我们看看传统的方法:
<%
' 打开数据库
Do While Not rs.eof
city=rs("city")
st=rs("state")
zip=rs("zip")
rs.movenext
LOOP
' 关闭数据库
%>
假设数据库中有2500条纪录和10个字段,那么用上面的方法就要向服务器发出
30000个请求:
25000 ---- 每个字段数据一次请求,10*2500共25000次
2500 ---- 每次rs.movenext一次请求,共2500条纪录,因此共2500次
2500 ---- 读取每一条纪录之前都要检测rs.eof,共2500条纪录,因此共2500次
这样一算,就是向服务器发出30000次请求
如果要是用数组呢?相信大家很容易就能理解:
myrs.getrows()
仅向服务器发出这一次请求,就把所有的数据都读了出来,并存在了一个有
2500*10=25000个元素的二维数组中,也就是说:1次请求代替了30000次。
通过这么一比较,我想没有人会说do while not myrecordset.eof ... loop方法
比数组方法显示纪录快,因此在我们编写asp程序时,我们要尽量用数组方法显示
纪录。
要将数据存入数组,就要用到recordset对象的getrows方法
首先,我们先介绍一下getrows的使用方法:
GetRows( [Rows], [Start] , [Fields])
把记录接收到一个二维数组之内。该数组自动创建。数组的第一个索引指明记录
的域;第二个索引标志该记录。Rows指明从记录集中接收多少条记录。缺省时接
收所有的记录。Start指明从记录集中何处开始接收记录,这里使用了书签。所以
如果想使用该参数,记录集必须支持书签功能。Fields是一个单独的域名或一个
域名数组,我们用它来限制在数组中接收哪些域。
实例:
<%
'连结数据库
set conn=Server.CreateObject("ADODB.Connection")
conn.Provider="Microsoft.Jet.OLEDB.4.0"
conn.Open server.mappath("test.mdb")
'在这里,我们假设我们有一个数据库,名为test.mdb,其中有一个test表
'我们的目的是将数据表中的所有数据输出,比较原始的方法也就是很多人都在用
的方法是do while not myrecordset.eof ... loop
'而这里我用的却不是这个方法,而是recordset的另一个方法,是先将表中的所
有纪录存在一个二维数组中,然后将他们显示,具体例子请看如下代码:
'创建recordset对象
set rs=server.createobject("adodb.recordset")
sql="select * from test order by id desc"
rs.open sql,conn,1,1
'将所有数据存入一个名为myarray的二维数组
myarray=rs.getrows()
'将这个二维数组显示,也就是显示出所有纪录
'rscont:表示第几条纪录
'rscolumn:表示第几个字段的内容
'ubound函数的使用方法请查阅vbscript参考手册
for rscount=0 to ubound(myarray,2)
for rscolumn=0 to ubound(myarray,1)
response.write myarray(rscolumn,rscount)&" "
next
response.write "
"
next
%>
【相关文章:】
没有相关文章
【发表评论】【打印此文】【关闭窗口】【点击数: 】
首先,我们先要说说为什么要用数组显示数据,让我用一个简单的例子来说明:
先让我们看看传统的方法:
<%
' 打开数据库
Do While Not rs.eof
city=rs("city")
st=rs("state")
zip=rs("zip")
rs.movenext
LOOP
' 关闭数据库
%>
假设数据库中有2500条纪录和10个字段,那么用上面的方法就要向服务器发出
30000个请求:
25000 ---- 每个字段数据一次请求,10*2500共25000次
2500 ---- 每次rs.movenext一次请求,共2500条纪录,因此共2500次
2500 ---- 读取每一条纪录之前都要检测rs.eof,共2500条纪录,因此共2500次
这样一算,就是向服务器发出30000次请求
如果要是用数组呢?相信大家很容易就能理解:
myrs.getrows()
仅向服务器发出这一次请求,就把所有的数据都读了出来,并存在了一个有
2500*10=25000个元素的二维数组中,也就是说:1次请求代替了30000次。
通过这么一比较,我想没有人会说do while not myrecordset.eof ... loop方法
比数组方法显示纪录快,因此在我们编写asp程序时,我们要尽量用数组方法显示
纪录。
要将数据存入数组,就要用到recordset对象的getrows方法
首先,我们先介绍一下getrows的使用方法:
GetRows( [Rows], [Start] , [Fields])
把记录接收到一个二维数组之内。该数组自动创建。数组的第一个索引指明记录
的域;第二个索引标志该记录。Rows指明从记录集中接收多少条记录。缺省时接
收所有的记录。Start指明从记录集中何处开始接收记录,这里使用了书签。所以
如果想使用该参数,记录集必须支持书签功能。Fields是一个单独的域名或一个
域名数组,我们用它来限制在数组中接收哪些域。
实例:
<%
'连结数据库
set conn=Server.CreateObject("ADODB.Connection")
conn.Provider="Microsoft.Jet.OLEDB.4.0"
conn.Open server.mappath("test.mdb")
'在这里,我们假设我们有一个数据库,名为test.mdb,其中有一个test表
'我们的目的是将数据表中的所有数据输出,比较原始的方法也就是很多人都在用
的方法是do while not myrecordset.eof ... loop
'而这里我用的却不是这个方法,而是recordset的另一个方法,是先将表中的所
有纪录存在一个二维数组中,然后将他们显示,具体例子请看如下代码:
'创建recordset对象
set rs=server.createobject("adodb.recordset")
sql="select * from test order by id desc"
rs.open sql,conn,1,1
'将所有数据存入一个名为myarray的二维数组
myarray=rs.getrows()
'将这个二维数组显示,也就是显示出所有纪录
'rscont:表示第几条纪录
'rscolumn:表示第几个字段的内容
'ubound函数的使用方法请查阅vbscript参考手册
for rscount=0 to ubound(myarray,2)
for rscolumn=0 to ubound(myarray,1)
response.write myarray(rscolumn,rscount)&" "
next
response.write "
"
next
%>
【相关文章:】
没有相关文章
【发表评论】【打印此文】【关闭窗口】【点击数: 】
★好玩的休闲小游戏★
网友评论:
数据载入中,请稍后……
