成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

ASP.NET 2.0數(shù)據(jù)教程:插入,更新和刪除數(shù)據(jù)

開發(fā) 后端
本文介紹了在asp.net 2.0中如何創(chuàng)建一個數(shù)據(jù)訪問層(DAL)的第四步:插入,更新和刪除數(shù)據(jù)。

ASP.NET 2.0數(shù)據(jù)教程第四步:插入,更新和刪除數(shù)據(jù)

ASP.NET 2.0中常用的插入,更新和刪除數(shù)據(jù)的模式有兩種。***種模式,我稱之為DB直接模式,涉及的方法被調用時,會向數(shù)據(jù)庫里發(fā)出一個INSERT, 或UPDATE,或DELETE命令,這個命令只對單個數(shù)據(jù)庫記錄做操作。象這樣的方法一般接受一系列對應于插入,更新或刪除的值的標量參數(shù)(譬如整數(shù),字符串,布爾值,日期時間等)。譬如,用這個模式來操作Products表的話,刪除方法會接受一個整數(shù)參數(shù),代表所需要刪除的記錄的ProductID,而插入方法則會接受一個對應于ProductName的字符串,對應 于UnitPrice的decimal值,對應于UnitsOnStock的整數(shù)等等。

每個插入,更新,和刪除請求都被立刻發(fā)送到數(shù)據(jù)庫 

圖 21: 每個插入,更新,和刪除請求都被立刻發(fā)送到數(shù)據(jù)庫

另外一個模式,我稱之為批更新模式,可以在一個方法調用里更新整個DataSet,或者整個DataTable,或 者一個DataRow集合。在這個模式里,開發(fā)人員在一個DataTable中刪除,插入,修改DataRow,然后把這 些DataRow或整個DataTable傳給一個更新方法。然后這個方法會輪循傳入的DataRow們,通過DataRow的RowState屬 性屬性來決定這些DataRow是否被改動過,或是新記錄,或是被刪除的記錄,然后為每個記錄發(fā)出合適的數(shù)據(jù)庫命令。

在Update 方法調用之后,所有的變動都與數(shù)據(jù)庫同步了 

圖 22: 在Update 方法調用之后,所有的變動都與數(shù)據(jù)庫同步了

在ASP.NET 2.0默認情形下,TableAdapter采用批更新模式,但也支持DB直接模式。因為我們在創(chuàng)建我們的TableAdapter時的高級選項中選擇了“生成插入,更新,和刪除語句” 這個選項,ProductsTableAdapter 包含了一個 Update()方法,該方法實現(xiàn)了批更新模式。具體地說,TableAdapter包含了一個Update() 方法,可以傳入一個強類型 的DataSet,或者一個強類型的DataTable,或者一個和多個DataRow。假如你在一開始創(chuàng)建TableAdapter時的選項中沒有清除“生成DB直接方法(GenerateDBDirectMethods)”復選框的話,DB直接模 式也會通過Insert(),Update()和Delete()方法來實現(xiàn)。

這兩種數(shù)據(jù)修改模式都使用了TableAdapter的InsertCommand,UpdateCommand, 和DeleteCommand屬性來向數(shù)據(jù)庫發(fā)出對應的INSERT,UPDATE和DELETE命令。你可以在DataSet設計器里點擊TableAdapter,然后在屬性窗口查看和改 動InsertCommand,UpdateCommand, 和DeleteCommand屬性。(確認你選擇了TableAdapter,并且ProductsTableAdapter對象是屬性窗口中下拉框里被選中的項)

TableAdapter包含InsertCommand,UpdateCommand, 和DeleteCommand等屬性 

圖23: TableAdapter包含InsertCommand,UpdateCommand, 和DeleteCommand等屬性

想查看或改動這些數(shù)據(jù)庫命令的屬性的話,點擊CommandText子屬性,這會啟動對應的查詢生成器。

在查詢生成器里配置插入,更新,刪除語句 

圖 24: 在查詢生成器里配置插入,更新,刪除語句

下面的編碼例子示范了如何使用批更新模式來把沒被終止的,且?guī)齑娴扔诨蛏儆?5個單元的產品的價格加倍:

  1. NorthwindTableAdapters.ProductsTableAdapter   
  2.  
  3. productsAdapter =  
  4.   new NorthwindTableAdapters.ProductsTableAdapter();  
  5.  
  6. // For each product, double its price if it is not discontinued   
  7.  
  8. and  
  9. // there are 25 items in stock or less  
  10. Northwind.ProductsDataTable products = productsAdapter.GetProducts();  
  11. foreach (Northwind.ProductsRow product in products)  
  12.    if (!product.Discontinued && product.UnitsInStock   
  13.  
  14. <  = 25)  
  15.       product.UnitPrice *= 2;  
  16.  
  17. // Update the products  
  18. productsAdapter.Update(products);  
  19.  

下面的編碼示范如何使用DB直接模式刪除一個產品,更新一個產品,然后添加一個新的產品:

C#

  1. NorthwindTableAdapters.ProductsTableAdapter   
  2.  
  3. productsAdapter = new   
  4.  
  5. NorthwindTableAdapters.ProductsTableAdapter();  
  6.  
  7. // Delete the product with ProductID 3  
  8. productsAdapter.Delete(3);  
  9.  
  10. // Update Chai (ProductID of 1), setting the UnitsOnOrder to   
  11.  
  12. 15  
  13. productsAdapter.Update("Chai", 1, 1, "10 boxes x 20 bags",  
  14.   18.0m, 39, 15, 10, false, 1);  
  15.  
  16. // Add a new product  
  17. productsAdapter.Insert("New Product", 1, 1,  
  18.   "12 tins per carton", 14.95m, 15, 0, 10, false);  
  19.    

創(chuàng)建自定義的插入,更新,刪除方法

用DB直接法生成的Insert(), Update(),和Delete()方法有時 候會感覺有點不方便,特別是當數(shù)據(jù)表有許多字段的時候。看一下前面這個編碼例子,沒有IntelliSense的幫助的話,不是很清楚Products表的哪個字段對應Update()和Insert()方法中的哪個輸入?yún)?shù)。有時候我們只要更新一到二個字 段或者需要一個自定義的Insert()方法,這個方法需要返回剛插入的記錄 的IDENTITY(自增)的字段值。

要創(chuàng)建這樣的自定義方法,回到DataSet設計器。在TableAdapter上按右鼠標,選擇“添加查詢”,然后回 到TableAdapter配置向導。在第二屏上,我們可以指明要生成的查詢的類型。讓我們生成一個添加新 的product(產品)記錄,然后返回新添加記錄的ProductID值的方法。因此,選擇生成一個插入(INSERT)型查詢。

創(chuàng)建一個給Products表添加新記錄的方法 

圖25: 創(chuàng)建一個給Products表添加新記錄的方法

下一個屏顯示InsertCommand的CommandText屬性。在查詢語句后面,增添一個SELECT SCOPE_IDENTITY()的查詢,這查詢將返回當前同一個操作范圍內插 入IDENTITY字段的***那個identity 值。(詳見技術文檔中關 于SCOPE_IDENTITY()的內容以及為什么你應該http://weblogs.sqlteam.com/travisl/archive/2003/10/29/405.aspx)。確認在添加SELECT語句前,你在INSERT語句后面添一個分號 。

增添查詢返回SCOPE_IDENTITY()值 

圖26: 增添查詢返回SCOPE_IDENTITY()值

***,把這個新方法命名為InsertProduct。

放方法名字設成InsertProduct  

圖 27:放方法名字設成InsertProduct

當你返回DataSet設計器時,你將看到ProductsTableAdapter多了一個新的方法,InsertProduct。如果對應Products表的每個字段,這個新的方法沒有對應的參數(shù)的話,非常可能的原因是,你忘了給INSERT語句的結尾添加一個分號(semi-colon)。重新配 置InsertProduct方法,確認在INSERT和SELECT語句間有個分號。

在ASP.NET 2.0的默認情形下,插入方法調用的是非查詢(non-query)方法,意即,他們只返回受影響的記錄數(shù)。但是,我們想要讓InsertProduct方法返回一個查詢返回的值,而不是受影響的記錄數(shù)。這可以把InsertProduct方法的ExecuteMode屬性改成Scalar(標量)來實現(xiàn)。

把ExecuteMode屬性改成Scalar 

圖 28:把ExecuteMode屬性改成Scalar

下面的編碼示范如何使用這個新的InsertProduct方法:

C# 

  1. NorthwindTableAdapters.ProductsTableAdapter   
  2.  
  3. productsAdapter = new   
  4.  
  5. NorthwindTableAdapters.ProductsTableAdapter();  
  6.  
  7. // Add a new product  
  8. int new_productID =   
  9.  
  10. Convert.ToInt32(productsAdapter.InsertProduct("New   
  11.  
  12. Product", 1, 1, "12 tins per carton",   
  13.  
  14. 14.95m, 10, 0, 10, false));  
  15.  
  16. // On second thought, delete the product  
  17. productsAdapter.Delete(new_productID);  
  18.  

【編輯推薦】

  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應用程序模型 

責任編輯:book05 來源: 博客堂
相關推薦

2009-07-27 16:09:05

GridView顯示數(shù)

2009-07-24 17:15:52

SiteMapData

2009-07-24 13:25:43

創(chuàng)建數(shù)據(jù)訪問層

2009-07-24 12:41:21

BLL類

2009-07-24 16:37:04

創(chuàng)建母版頁asp.net 2.0

2009-07-27 03:21:00

breadcrumb導

2009-07-27 16:22:54

GridView選擇行

2009-07-27 09:01:44

ObjectDataS

2009-07-24 17:08:31

添加站點地圖asp.net

2009-07-24 14:15:51

數(shù)據(jù)訪問層

2009-07-27 09:39:04

SelectMetho

2009-07-27 09:28:55

TableAdapte

2009-07-23 14:43:24

數(shù)據(jù)源控件ASP.NET 2.0

2009-07-28 14:06:28

ASP.NET 2.0

2009-07-22 17:21:27

ASP.NET 2.0

2024-01-08 09:10:35

PostgreSQL數(shù)據(jù)庫管理系統(tǒng)

2009-07-27 08:51:24

ObjectDataS

2009-07-24 16:55:53

添加aspx頁面

2009-07-27 16:53:15

ASP.NET 2.0

2009-07-24 13:08:03

BLL類ASP.NET 2.0
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲视频精品 | 一区二区三区久久 | 色吧久久| 日韩中文字幕视频在线观看 | 成人毛片视频在线播放 | 日本久久精品 | 国产一二三区电影 | 久久av资源网 | 一区二区影视 | 神马久久久久久久久久 | 日本久久久久久 | 国产99久久精品一区二区永久免费 | 在线免费激情视频 | 在线观看国产wwwa级羞羞视频 | 精品视频一区二区 | 日韩在线免费 | 欧美男人天堂 | 欧美国产视频 | 国产在线a | www国产亚洲精品 | 91久操视频 | 91xxx在线观看 | 成人精品在线 | 亚洲国产精品一区 | aaaaaa大片免费看最大的 | 国产91在线播放精品91 | 九色av | 我要看黄色录像一级片 | 婷婷国产一区二区三区 | 3p视频在线观看 | 国产精品久久7777777 | 欧美视频三区 | 国产成人综合网 | 亚洲精品一区二区二区 | 亚洲成av片人久久久 | 国产精品久久久亚洲 | 日韩欧美福利视频 | 少妇久久久 | 精品久久九九 | 亚洲欧美日韩在线 | 久久小视频 |