欢迎光临
我们一直在努力

小心数据集乱套-ASP教程,数据库相关

建站超值云服务器,限时71元/月

最近帮学校做一个东西,大概两天就弄出来一个,而且今天也上缴了,但是总是觉得有一些担心。突然想测试测试,本来是想测试一下用二分法对数据进行选取的,但是,不知道怎么能得到last record and first record,所以,就想慢慢测试测试,怎么能得到last and first record,但是实际中的测试吓一大跳。asp数据集的有可能乱套。

以前,写asp读取数据时,总是用“select * from table”直接选取数据,然后用

if not rs.eof then

rs.movelast

do while not rs.bof then

response.write rs(“id“)

…..

loop

end if

简单的说就是用一个循环直接读取数据库所有数据,但是如果数据有几万条的话,速度是可想而知的了,所以想用二分法对数据进行选择显示,但是不知道怎么能得到开始和最后的数据,又想到了rs.bof rs.eof 本来是想怎么能得到字段id的最大值,最小值,然后好比较的,但是实际操作中发现,如果你用下面的东西,不一定得到最大值和最小值:

if not rs.bof then

rs.movefirst

frsid=rs("id")

end if

if not rs.eof then

rs.movelast

lstid=rs("id")

end if

do while not rs.bof

response.write "id is "&rs("id")&"

"

rs.moveprevious

loop

response.write "first id="&frsid&"

"

response.write "last id="&lstid&"

"

显示的frsid=6,lstid=15,可是在显示的全体数据中有一条数据的id为16,也就是说最大的id!=lstid(以前我总是认为这个是想等),最后检查发现是sql语句有问题,改成“select * from login order by id asc”时,显示:

id is 16

id is 15

id is 14

id is 13

id is 12

id is 11

id is 10

id is 8

id is 7

id is 6

first id=6

last id=16

将sql换成select * from login order by id desc”时,却是:

id is 6

id is 7

id is 8

id is 10

id is 11

id is 12

id is 13

id is 14

id is 15

id is 16

first id=16

last id=6

这样两个数据的排列完全和sql中要求的不一样(本来是asc的再显示的时候是desc,向desc的现实的确实asc的),而且显示出来的东西和login表中数据也完全不一样。

结论:数据的排列完全是靠sql和recordset双方控制的。在你没有对指针记录操作时,指针记录是乱得,最好对数据操作时,先整理一下数据的排列,让它能够按序排列,方便以后操作。

赞(0)
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » 小心数据集乱套-ASP教程,数据库相关
分享到: 更多 (0)

相关推荐

  • 暂无文章