2011-04-07 52 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