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