Access数据搜索--奇怪问题
嗯,以前编写的一个论坛的搜索叶面,在帖子不是很多的时候 (<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>