推薦:ASP 3.0高級編程(三十一)7.1.2 語義或“運行期”錯誤語法錯誤的發現和處理是令人煩惱的,但在編程中會遇到一些真正“令人興奮”的另一類型的錯誤——語義錯誤(semantic error)或稱&ld
思考一個問題:怎么實現在第一次檢索的基礎上進行二次檢索?
通常,我們的做法是第一次檢索時保存檢索條件,在第二次行檢索時組合兩次檢索條件對數據庫進行一次新的查詢,如:
第一次檢索:Select * from table where age>18
第二次檢索:Select * from table where age>18 and name like 'zh%'
這樣做雖可以實現我們所要的結果,但效率上個人認為卻大打了折扣!
能不能緩存第一次檢索的記錄集,第二次檢索時只在緩存的記錄集上進行,而不是重新對數據庫進行查詢?
RecordSet對象有個屬性Filter,它的作用是通過添加條件以控制欲顯示的記錄集,但并不影響原本的記錄集!我們來看下怎么用它實現二次檢索:
以下為引用的內容: <% Dim oConn,oRs Set oConn=Server.CreateObject("ADODB.Connection") oConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" Server.MapPath("db1.mdb") Set ors = Server.CreateObject("ADODB.RecordSet") ors.Open "select * from t1 where age>20",oConn,1,2 Response.Write "一次檢索:select * from t1 where age>20<br/>" Response.Write "----------------------------------<br/><br/>" Do while not ors.Eof Response.Write ors("name") & ":" & ors("age") & "<br/>" ors.MoveNext Loop Response.Write "總計:" & ors.RecordCount & "<br/>" Response.Write "----------------------------------<br/><br/>" Response.Write "二次檢索:Filter(name like '王%')<br/>" Response.Write "----------------------------------<br/><br/>" ors.Filter = "name like '王%'" If not(oRs.Eof and ors.Bof) Then ors.MoveFirst Do while not ors.Eof Response.Write ors("name") & ":" & ors("age") & "<br/>" ors.MoveNext Loop Response.Write "總計:" & ors.RecordCount & "<br/>" Response.Write "----------------------------------<br/>" ors.Close Set ors = Nothing oConn.Close Set oConn = Nothing %> |
結果:

分享:深入理解ASP中FSO的神奇功能在ASP中,FSO的意思是File System Object,即文件系統對象。我們將要操縱的計算機文件系統,在這里是指位于web服務器之上。所以,確認你對此擁有合適的權限。理想情況下,你可以在自己的機器