程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> ASP.NET >> 關於ASP.NET >> ASP.NET 2.0數據教程之六十七:在TableAdapters裡創建新的存儲過程

ASP.NET 2.0數據教程之六十七:在TableAdapters裡創建新的存儲過程

編輯:關於ASP.NET

返回“ASP.NET 2.0數據教程目錄”

導言:

本教程的Data Access Layer (DAL)使用的是類型化的數據集 (Typed DataSets).就像我們在第一章《Creating aData Access Layer》裡探討 的一樣,該類型化的數據集由強類型的DataTable和TableAdapter構成。 DataTable描繪的是系統裡的邏輯實體而TableAdapter引用相關數據庫執行數據訪 問,包括對DataTable填充數據、執行返回標量數據(scalar data)的請求、添加 ,更新,刪除數據庫裡的記錄等.

TableAdapter執行的SQL命令要麼是某 個特定的SQL statements,比如SELECT columnList FROM TableName;要麼是存儲 過程.本教程前面部分的TableAdapter使用的是SQL statements.不過很多開發者 和數據庫管理員基於安全、便於維護等方面的考慮,偏愛使用存儲過程;不過也 有的人出於靈活性的考慮偏愛使用SQL statement.就我自己而言,我也偏向於存 儲過程.在前面的文章,出於簡化的目的我選用的是SQL statements.

當定 義一個新TableAdapter或添加新方法時,使用TableAdapter的設置向導,我們可 以很容易的創建新的或使用現有的存儲過程.在本文,我們將考察如何使用設置向 導自動的生產存儲過程。在下一章我們考察如何設置TableAdapter的方法使用現 有的或手動創建存儲過程.

注意:

關於討論到底使用存儲過程還是 使用SQL statements的問題,可參考Rob Howard的博客文章《Don’t Use Stored Procedures Yet?》 (http://weblogs.asp.net/rhoward/archive/2003/11/17/38095.aspx)和Frans Bouma的博客文章《Stored Procedures are Bad, M’Kay?》 (http://weblogs.asp.net/fboue/2003/11/18/38178.aspx)

存儲過程基 礎

一個存儲過程由一系列的T-SQL statement組成,當調用該存儲過程時 就執行這些T-SQL statement.存儲過程可以接受0到多個輸入參數,返回標量值、 輸出參數,或最常見的返回SELECT查詢值.

注意:存儲過程Stored procedures也經常引用為“sprocs” or “SPs”.

可以使用T-SQL statement語句CREATE PROCEDURE來創建存儲過程.比如下面的T- SQL腳本創建了一個名為GetProductsByCategoryID的存儲過程,它有一個名為 @CategoryID的參數,並且將表Products裡與CategoryID值相吻合的那條記錄的 ProductID, ProductName, UnitPrice,以及Discontinued值返 回.

CREATE PROCEDURE GetProductsByCategoryID
(
   @CategoryID int
)
AS

SELECT ProductID, ProductName, UnitPrice, Discontinued
FROM Products
WHERE CategoryID = @CategoryID

創建後,我們可以用下面的代碼調用 它:

EXEC GetProductsByCategory categoryID

注 意:

在下篇文章我們將在Visual Studio IDE集成環境裡創建存儲過程.不 過在本文,我們將用TableAdapter向導來自動創建存儲過程.

除了返回數 據外,我們還可以在一個事務裡用存儲過程執行多條數據庫命令.比如,假如有一 個名為DeleteCategory的存儲過程,其包含一個輸入參數@CategoryID,並執行2 個DELETE statemets,第一個是刪除相關的products,第二個是刪除category。 存儲過程裡面的多個statements並不是自動的封裝在一個事務裡的.我們應添加額 外的T-SQL commands以確保存儲過程裡的多條數據庫命令當成原子操作處理.我們 將在後面的內容考察如何用事務來封裝存儲過程的命令.

當在體系的某個 層使用存儲過程時,Data Access Layer的方法將調用某個具體的存儲過程而不是 發出一個SQL statement命令.這樣一來我們可以發現、分析發出的查詢命令.並可 以更清楚的看到數據庫是如何使用的.有關存儲過程基本原理的更多信息,可參考 本文結束部分的延伸閱讀.

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved