使用Command執行存儲過程

 <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

.NET Framework Developer's Guide

使用Command執行存儲過程

 

在數據驅動的應用程序中,存儲過程可以提供很多優點。使用存儲過程可以將數據庫操作封裝到一條簡單的命令中,可以優化效能,可以增強安全性。只需要按照SQL語法在存儲過程名後面跟帶參數就可以調用該存儲過程。使用ADO.NETCommand對象的Parameters屬性你還可以明確的定義和使用output參數和return值。

調用存儲過程時,要設置Command對象的CommandType屬性爲StoreProcedure。一旦設定了CommandType屬性爲StoreProcedure,你就可以使用Parameters集合來定義參數,就像下面的例子。

注意 使用OdbcCommand調用存儲過程時要求提供完整的ODBC CALL語法。

SqlClient

OleDb

Odbc

一個Parameter對象可以使用Parameter構造器創建,也可以通過調用Command對象的Parameters集合的Add方法創建。Parameters.Add方法的輸入參數可以和構造器相同,也可以使用一個存在的Parameter對象。用System.DBNull.Value設置Parameter的值爲空。

如果要設置Parameter爲非一般的輸入參數時,必須設置ParameterDirection屬性爲InputOutputOutput,或者ReturnValue。下面的例子演示了創建Input, Output, ReturnValue參數的差別。

SqlClient

OleDb

Odbc

SqlCommand中使用參數

SqlCommand中使用參數時,參數的名字必須和存儲過程中相應參數的名字匹配。SQL SERVER.NET Framework Data Provider將存儲過程中的參數視爲命名參數並且搜索與之匹配的參數標記。

SQL SERVER.NET Framework Data Provider不支持使用問號標記(?)作爲佔位符來向SQL語句或者存儲過程傳遞參數。既然如此,你必須命名參數,就下面一樣:

OleDbCommand OdbcCommand中使用參數

OleDbCommand或者OdbcCommand中使用參數時,參數添加到Parameters集合中的順序必須和存儲過程中參數定義的順序匹配。OLE DBODBC.NET Framework數據供應程序將存儲過程的參數視爲佔位符,按照順序來給參數賦值。另外,返回參數必須是第一個被加入到Parameters集合中的參數。

OLE DBODBC.NET Framework數據供應程序不提供使用命名參數來向SQL語句或存儲過程傳遞參數。爲此,你必須使用問號(?)佔位符,就像下面一樣:

因此,向 Parameters 集合添加 Parameter 對象的順序必須直接對應於該參數的問號佔位符的位置。

導出參數信息

參數也可以使用 CommandBuilder 類從存儲過程導出。SqlCommandBuilder OleDbCommandBuilder 類都提供了靜態方法 DeriveParameters,該靜態方法將自動使用存儲過程中的參數信息填充 Command 對象的 Parameters 集合。請注意,DeriveParameters 將改寫 Command 的任何現有參數信息。

導出參數信息時需要經歷一個到數據源的附加行程,以獲取參數信息。如果參數信息在設計時是已知的,則可以通過顯式設置參數來提高應用程序的性能。

以下代碼示例顯示如何使用 CommandBuilder.DeriveParameters 來填充 Command 對象的 Parameters 集合。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章