闡述ADO語句執行使用方法
進行學習ADO語句當有人為表增加了更多的列時,你不會得到大得出奇的結果集,一些開發者使用延遲綁定技術的原因在于,他們想要明確地標識出SELECT語句選擇了哪些行,不存在代碼引用的是哪一個列這類問題。如果你完全按照下列方式編寫代碼。
不要強制SQL Server每次執行查詢的時候重新編譯和構造查詢執行計劃。ADO語句避免這種重復操作的一種簡單方法是使用帶有參數的存儲過程。ADO語句注意盡量不要使用ADO Command對象的Prepare屬性——有時它不能正確工作。
如果使用存儲過程,你還可以通過消除不必要的“受影響行數”返回值進一步提高ADO性能——只需在存儲過程中加入SET NOCOUNT ON就可以了。 盡量減少與服務器的通信次數。如果你有幾個相關的操作要執行,請把它們合并為一個存儲過程,或者是一個可以在服務器上作為腳本執行的復合查詢。ADO語句避免使用方法(比如Refresh)和不適當的Parameters集合引用,ADO語句會強制ADO增加額外的服務器通信過程。#t#
在客戶機/服務器應用中,只構造Command對象一次,而不是每次使用Command對象的時候重新構造。你可以重新設置Command的參數值,然后在需要時執行它。 當查詢返回的不是一個記錄集時,確保使用了adExecuteNoRecords選項,告訴ADO越過所有那些用來接收和構造記錄集(Recordset格式)的代碼。你可以把adExecuteNoRecords選項傳遞給Execute方法,或把它作為Command的選項。
執行返回簡單記錄集的存儲過程時,不要使用Command對象。ADO語句所有的存儲過程(以及Command對象)可以作為Connection對象的COM方法出現。讓存儲過程作為Connection對象的方法出現有著顯著的性能優勢,同時它也簡化了代碼。
盡管這種技術對于那些有Return Status值或Output參數的存儲過程沒有什么幫助,但對于動作查詢(INSERT、DELETE等)以及那些返回一個或多個記錄的查詢來說,這種技術很有用。把存儲過程作為Connection的方法之后,你可以用方法參數的形式傳入存儲過程的輸入參數;如果調用存儲過程返回了一個記錄集,你可以通過方法調用中最后一個參數引用該Recordset。例如,下面的ADO語句執行一個名為“Fred”的存儲過程,Fred存儲過程有兩個輸入參數,返回一個Recordset:

















