2011-04-07 63 views
0

我想写一个非常简单的脚本,用于使用经典ASP的站点中的搜索功能。如下:经典的ASP - 简单的脚本定时输出

<% 

Dim keyword, page 
set Cnt=Server.CreateObject("ADODB.Connection") 
keyword = Request.QueryString("s") 
page = Cint(Request.QueryString("p")) 

Function openDB() 
     DSN="Driver={SQL Server};Server=xx.xxx.xxx.xxx;Database=db_xxx;UID=xxx;PWD=xxx" 
    Cnt.Open(DSN) 
End Function 

Function closeDB() 
    Cnt.Close() 
End Function 

If (page = 0) Then 
    page = 1 
End If 

If (Trim(keyword) <> "") Then 

     openDB() 

     strSQL = "WITH OrderedResults AS (SELECT *, ROW_NUMBER() OVER (order by memorialid) as RowNumber FROM memorials WHERE bg LIKE '%2%') SELECT * FROM OrderedResults WHERE RowNumber between 1 and 5" 

     set rs = cnt.execute(strSQL)     

     While NOT rs.EOF 

      Response.Write(rs("name")) 

     Wend  

     closeDB() 
End If 


%> 

问题是,这个脚本只是保持超时。目前表中只有5条记录,当我在Managment Studio中直接运行SQL时,它会以毫秒为单位返回结果。任何人都可以帮我弄清楚为什么这个脚本需要这么长时间。

回答

4

你缺少的重要rs.movenext

While NOT rs.EOF 

     Response.Write(rs("name")) 
     rs.movenext 

    Wend 

,否则你的代码永远不会退出循环,因为它使打印相同的记录..

+1

它的工作原理!谢谢!我讨厌经典的asp。 – gunwin 2011-04-07 22:51:13