日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關咨詢
選擇下列產品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關閉右側工具欄

新聞中心

這里有您想知道的互聯網營銷解決方案
ASP.NET 2.0數據教程:完成數據訪問層

第五步:完成數據訪問層

創(chuàng)新互聯是一家集網站建設,若羌企業(yè)網站建設,若羌品牌網站建設,網站定制,若羌網站建設報價,網絡營銷,網絡優(yōu)化,若羌網站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強企業(yè)競爭力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯網需求。同時我們時刻保持專業(yè)、時尚、前沿,時刻以成就客戶成長自我,堅持不斷學習、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實用型網站。

注意,ProductsTableAdapters類從Products表中返回的是CategoryID和SupplierID的值,但并不包括Categories表 的CategoryName字段和Suppliers表的CompanyName字段,盡管當我們顯示產品信息時,這些很可能是我們想要顯示的字段。我們可以擴充TableAdapter的起始方法GetProducts()來包含CategoryName和CompanyName字段的值,這方法進而會更新強類型的DataTable來包括這些新的字段。

但這會造成一個問題,因為TableAdapter的插入,更新,刪除數據的方法是基于這個起始方法的,幸運的是,自動生成的插入,更新,刪除方法并不會受SELECT子句中的子查詢的影響。如果我們注意把對Categories和Suppliers的查詢添加成子查詢,而不是用JOIN語 句的話,我們可以避免重做這些修改數據的方法。在ProductsTableAdapter中的GetProducts()方法上按右鼠標,選擇“配置”,然后,把SELECT子句改成:

SQL

 
 
 
 
  1. SELECT     ProductID, ProductName, SupplierID, CategoryID,  
  2. QuantityPerUnit, UnitPrice, UnitsInStock, UnitsOnOrder, ReorderLevel, Discontinued,  
  3. (SELECT CategoryName FROM Categories  
  4. WHERE Categories.CategoryID = Products.CategoryID) as CategoryName,  
  5. (SELECT CompanyName FROM Suppliers  
  6. WHERE Suppliers.SupplierID = Products.SupplierID) as SupplierName  
  7. FROM         Products  

圖29: 更新GetProducts()方法的SELECT語句

在更新GetProducts()方法使用這個新查詢語句之后,對應的DataTable將包含2個新字段,CategoryName和SupplierName。

 

圖30: Products DataTable多了2個新字段

花點時間把GetProductsByCategoryID(categoryID)方法中的SELECT 子句也更新一下。

如果你使用JOIN句法更新GetProducts()中的SELECT語句的話 ,DataSet設計器不能使用DB直接模式自動生成插入,更新,以及刪除數據庫記錄的方法。你必須手工生成這 些方法,就象本教程早先時候我們對InsertProduct方法的做法一樣。此外,你必須手工提供InsertCommand,UpdateCommand和DeleteCommand屬性值,假如你想使用批更新模式的話。

完成數據訪問層:添加其他的TableAdapter

到目前為止,我們只討論了針對單個數據表的單個TableAdapter。但是,Northwind數據庫里含有我們需要在我們的web應用中使用的幾個相關的表。一個強類型的DataSet可以包含多個相關的DataTable。因此,為了完成我們的DAL,我們需要為這些我們將來要用到的數據表添加相應的DataTable。步驟如下,打開 DataSet設計 器,在設計器上按右鼠標,選擇“添加/TableAdapter”。這會生成一個新的DataTable和TableAdapter,然后我們早先討論過的配置向導會指引你完成配置。

花上幾分鐘,創(chuàng)建對應于下列查詢的TableAdapter及其方法。注意,ProductsTableAdapter的查詢中包含了用以獲取每個產品的分類和供應商名字的子查詢。另外,如果你是隨著教程在做的話,你已經添加過ProductsTableAdapter類的GetProducts()和GetProductsByCategoryID(categoryID)方法了。

 
 
 
 
  1. ProductsTableAdapter  
  2. GetProducts:  
  3. SELECT ProductID, ProductName, SupplierID, CategoryID,  
  4. QuantityPerUnit, UnitPrice, UnitsInStock, UnitsOnOrder,  
  5. ReorderLevel, Discontinued , (SELECT CategoryName FROM 
  6. Categories WHERE Categories.CategoryID =  
  7. Products.ProductID) as CategoryName, (SELECT CompanyName  
  8. FROM Suppliers WHERE Suppliers.SupplierID =  
  9. Products.SupplierID) as SupplierName  
  10. FROM Products  
  11. GetProductsByCategoryID:  
  12. SELECT ProductID, ProductName, SupplierID, CategoryID,  
  13. QuantityPerUnit, UnitPrice, UnitsInStock, UnitsOnOrder,  
  14. ReorderLevel, Discontinued , (SELECT CategoryName FROM 
  15. Categories WHERE Categories.CategoryID =  
  16. Products.ProductID) as CategoryName,  
  17. (SELECT CompanyName FROM Suppliers WHERE 
  18. Suppliers.SupplierID = Products.SupplierID) as SupplierName  
  19. FROM Products  
  20. WHERE CategoryID = @CategoryID  
  21. GetProductsBySupplierID  
  22. SELECT ProductID, ProductName, SupplierID, CategoryID,  
  23. QuantityPerUnit, UnitPrice, UnitsInStock, UnitsOnOrder,  
  24. ReorderLevel, Discontinued ,  
  25. (SELECT CategoryName FROM Categories WHERE 
  26. Categories.CategoryID = Products.ProductID)  
  27. as CategoryName, (SELECT CompanyName FROM Suppliers  
  28. WHERE Suppliers.SupplierID = Products.SupplierID)  
  29. as SupplierName  
  30. FROM Products  
  31. WHERE SupplierID = @SupplierID  
  32. GetProductByProductID  
  33. SELECT ProductID, ProductName, SupplierID, CategoryID,  
  34. QuantityPerUnit, UnitPrice, UnitsInStock, UnitsOnOrder,  
  35. ReorderLevel, Discontinued , (SELECT CategoryName  
  36. FROM Categories WHERE Categories.CategoryID =  
  37. Products.ProductID) as CategoryName,  
  38. (SELECT CompanyName FROM Suppliers  
  39. WHERE Suppliers.SupplierID = Products.SupplierID)  
  40. as SupplierName  
  41. FROM Products  
  42. WHERE ProductID = @ProductID  
  43.    
  44. CategoriesTableAdapter  
  45. GetCategories  
  46. SELECT CategoryID, CategoryName, Description  
  47. FROM Categories  
  48. GetCategoryByCategoryID  
  49. SELECT CategoryID, CategoryName, Description  
  50. FROM Categories  
  51. WHERE CategoryID = @CategoryID  
  52.    
  53. SuppliersTableAdapter  
  54. GetSuppliers  
  55. SELECT SupplierID, CompanyName, Address, City,  
  56. Country, Phone  
  57. FROM Suppliers  
  58. GetSuppliersByCountry  
  59. SELECT SupplierID, CompanyName, Address,  
  60. City, Country, Phone  
  61. FROM Suppliers  
  62. WHERE Country = @Country  
  63. GetSupplierBySupplierID  
  64. SELECT SupplierID, CompanyName, Address,  
  65. City, Country, Phone  
  66. FROM Suppliers  
  67. WHERE SupplierID = @SupplierID  
  68.    
  69. EmployeesTableAdapter  
  70. GetEmployees  
  71. SELECT EmployeeID, LastName, FirstName,  
  72. Title, HireDate, ReportsTo, Country  
  73. FROM Employees  
  74. GetEmployeesByManager  
  75. SELECT EmployeeID, LastName, FirstName,  
  76. Title, HireDate, ReportsTo, Country  
  77. FROM Employees  
  78. WHERE ReportsTo = @ManagerID  
  79. GetEmployeeByEmployeeID  
  80. SELECT EmployeeID, LastName, FirstName,  
  81. Title, HireDate, ReportsTo, Country  
  82. FROM Employees  
  83. WHERE EmployeeID = @EmployeeID  

圖31:完成數據訪問層:添加了四個TableAdapter后的DataSet設計器

【編輯推薦】

  1. 如何在IIS6.0中部署asp.net mvc程序
  2. 用Winform傻瓜式搭建asp.net mvc框架
  3. ASP.NET Session失效的編程思路
  4. ASP.NET Session 狀態(tài)的存儲
  5. 了解ASP.NET Web應用程序模型

當前題目:ASP.NET 2.0數據教程:完成數據訪問層
網站鏈接:http://www.dlmjj.cn/article/cdjiedi.html