您好,登錄后才能下訂單哦!
這篇文章主要介紹“ADO參數的使用方法”,在日常操作中,相信很多人在ADO參數的使用方法問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”ADO參數的使用方法”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
其實對于ADO參數這個東西我有許多想說的,如果不設置游標為adUseClient,那么我在取return和output參數的時候,必須在我把記錄集關閉以后才能取,就是說,必須先取記錄集,然后關閉它,***再取return和output參數。
設成adUseClient就ok了,另外有ADO參數一點就是,Execute 方法返回的游標繼承該設置。Recordset 將自動從與之關聯的連接中繼承該設置。我把pConn設成adUADO參數seClient,那么***,我的記錄集也是adUseClient的了。
在可以執行這個存儲過程了m_pRecordset = m_pCommand->Execute(0,0,adCmdStoredProc);這個時候,如果接下來用variant_t ret_val = m_pCommand->Parameters->GetItem((long)0)->Value;那么將得不到值而如果像下面這樣調用的話就可以得到返回值了m_pRecordset->Close();variant_t outpuADO參數t_para = m_pCommand->Parameters->GetItem((long)0)->Value;
MS ADO.net給這一現象的回復是
You can think of a storADO參數ed procedure as a function in your code. The function doesn’t return a value until it has executed all of its code. If the stored procedure returns results and you haven’t finished processing these results, the stored procedure hasn’t really finished executing. Until you’ve closed the DataReader, the return and output parameters of your Command won’t contain the values returned by your stored procedure.
也就是說Execute()函數應該看成是直到m_pRecordset關掉以后才會正確返回.關于輸出參數的處理也和這一樣,因為返回值本身就是當成輸出參數來處理的.通過這種方法,我們可以得到一個存儲過程的返回值和結果集,而且對于所有的存儲過程都可以一樣使用,不必為某個特定ADO參數的存儲過程去寫代碼,具有一定的通用性.
所以一但調用它以后,就可以獲取SP的那些信息,那些參數的信息,可以通過pCmd->Parameters->Item[_variant_t(_bstr_t(\"@pin1\") )]->Value=_variant_t(3); 這樣的方式來設置參數
如果要使用Parameter的辦法的話,就不要用refresh了,事實上,如ADO參數果先把這些參數的值設置好了,如 inParam2->Value = _variant_t(_T(\"DD1\"));,一旦refresh后,這些參數就沒有意義了。
Command.Prepare方法能夠提高數據源中重復的參數化命令的性能。Prepare指示數據源為多個調用優化特定的命令。為了更高效率地使用Prepare,你必須十分清楚數據源怎樣回應Prepare調用。對于類似SQL Server 2000的數據源,命令是隱式優化的,ADO參數對Prepare的調用是沒有必要的,但是對于另一些數據源,例如SQL Server 7.0,Prepare效率更高。
到此,關于“ADO參數的使用方法”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。