Access数据搜索--奇怪问题

stroll 2003-03-20 05:04:24
嗯,以前编写的一个论坛的搜索叶面,在帖子不是很多的时候 (<200) 完全可以正常工作……可是随着帖子的增多,奇怪的事情就发生了(似乎你好象预料到了?)

先对数据分布作一下说明:

首贴 和 回帖 分别放在 两个不同的表中, 首贴合回帖的标题字段均采用 Unicode压缩(Access默认如此),而 回帖 一般来说前面中会有英文字串 Re:

然后我再说一下发生的现象:

帖子增多后,搜索 首贴的标题字段, 不到6个就说内存溢出……错误如下:

Microsoft JET Database Engine 错误 '80004005'
内存溢出
/gao986/bbs/search.asp,行114

也许你会说帖子太多,不写分页,自然内存溢出…… 是这样的么?然后我把代码修改成只搜索 回帖,(注:回帖数量远远超过首贴,并且字段更多)

出人意料的是…… 竟然可以完成搜索?! 最大还能达到 250 条左右。相比之下, 首贴才6条, 而回帖 竟然 250 条?这个对比也太不可思议了吧?

一开始我以为是Unicode压缩问题,结果修改了还是不行,哪怕重新建表~~~实在弄不明白什么原因?不知谁碰到过这样的情况?能不能告诉我引发的原因和解决方法?谢谢


附上代码:(做了简化--运行过也还是不行)
<!--#include virtual="CONOBJ.asp"-->
<html>
<body>
<%
Dim rs,lsql,isql,TITLE

' Sql 首贴
lsql = "select ID,TITLE From [LIST] Where TITLE Like '%"& replace(Request.QueryString("SW"),"'","''") &"%'"
' Sql 回帖
isql = "select LID,TITLE,RUSERID,RTIME From [ITEM] Where TITLE Like '%"& replace(Request.QueryString("SW"),"'","''") &"%'"


' 首贴 和回帖 搜索一样 只是 lsql 和 isql 的对换
If lsql <> "" Then
Set rs = bbsconobj.execute(lsql)

While Not rs.Bof and Not rs.Eof
TITLE = rs(1)
If IsNull(TITLE) Or TITLE = "" Then
TITLE = "无标题"
Else
TITLE = Server.HTMLEncode(TITLE)
End If

Response.Write TITLE

rs.MoveNext
Wend

rs.Close
Set rs = Nothing
End If

CloseBBSDB
%>
</body>
</html>

...全文
25 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
flashsoft2000 2003-04-05
  • 打赏
  • 举报
回复
是因为你的字符串里面包含了空格,因为我也遇到过
stroll 2003-03-20
  • 打赏
  • 举报
回复
不好意思,错了,应该是

rs.MoveNext '<--114

这段,不过这个错一般来说知识超出 rs.Bof or rs.Eof 才会错阿,对吧?和内存溢出有什么关系?
stroll 2003-03-20
  • 打赏
  • 举报
回复
Set rs = bbsconobj.execute(lsql) <---114

muxinpp 2003-03-20
  • 打赏
  • 举报
回复
我想知道的是行114是什么东西

28,391

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧