大致了解ADO.NET參數相關問題
一段時間以來,存儲過程一直是企業應用程序開發數據訪問的***方法。存儲過程的安全性更高、封裝能力更強,并能執行復雜的邏輯,且不會打亂應用程序代碼。但是,ADO.NET參數也存在一些缺點:
◆開發者傾向于在存儲過程中加入商業邏輯
◆更改過程時必須改變開發環境
◆查找過程所需的參數比較費時
◆許多時候,存儲過程提供的功能超出所需
嵌入到應用程序代碼中的內聯SQL代碼是數據訪問的另一個常見方法。雖然企業在開發過程中很少用到這種方法,但許多小型項目應用這種類型的數據訪問方法。應用內聯SQL可以實現快速開發,但它并不具有存儲過程的安全與封裝優勢。 #t#
參數化查詢介于存儲過程與內聯SQL之間。它為數據訪問程序開發提供一種安全、封裝性的方法,并允許你利用內聯ADO.NET參數的快速開發優勢。 如何應用參數化查詢 應用參數化查詢并不那么容易。例如,下面的代碼(圖A)說明如何編寫參數化查詢:
在這個例子中,我們選擇所有具有指定CustomerID的用戶。注意,這個過程與在一個存儲過程中編寫Select語句十分相似。其不同在于你將它直接嵌入你的應用程序代碼或源文件中。(我們稍后再討論源文件。)
為使ADO.NET參數能夠移植@CustomerID參數,你只需簡單建立一個正常的SqlParameter并將它加入到當前命令的SqlCommand.Parameters集中。然后你就可在希望的連接上執行命令,ADO.NET參數則建立在SQL服務器上執行的命令。下面的代碼片斷(圖B)是一個說明如何建立并執行整個命令的例子: