本文介绍了在asp.net 2.0中如何创建一个数据访问层(DAL)的第四步:插入,更新和删除数据。

ASP.NET 2.0数据教程第四步:刺进,更新和删去数据

ASP.NET 2.0中常用的刺进,更新和删去数据的形式有两种。***种形式,我称之为DB直接形式,触及的办法被调用时,会向数据库里宣布一个INSERT, 或UPDATE,或DELETE指令,这个指令只对单个数据库记载做操作。象这样的办法一般承受一系列对应于刺进,更新或删去的值的标量参数(比如整数,字符串,布尔值,日期时刻等)。比如,用这个形式来操作Products表的话,删去办法会承受一个整数参数,代表所需求删去的记载的ProductID,而刺进办法则会承受一个对应于ProductName的字符串,对应 于UnitPrice的decimal值,对应于UnitsOnStock的整数等等。

ASP.NET 2.0数据教程:刺进,更新和删去数据  2.0 第1张

图 21: 每个刺进,更新,和删去恳求都被马上发送到数据库

别的一个形式,我称之为批更新形式,能够在一个办法调用里更新整个DataSet,或许整个DataTable,或 者一个DataRow调集。在这个形式里,开发人员在一个DataTable中删去,刺进,修正DataRow,然后把这 些DataRow或整个DataTable传给一个更新办法。然后这个办法会轮循传入的DataRow们,经过DataRow的RowState属 性特点来决议这些DataRow是否被改动过,或是新记载,或是被删去的记载,然后为每个记载宣布适宜的数据库指令。

ASP.NET 2.0数据教程:刺进,更新和删去数据  2.0 第2张

图 22: 在Update 办法调用之后,一切的变化都与数据库同步了

在ASP.NET 2.0默许景象下,TableAdapter选用批更新形式,但也支撑DB直接形式。由于咱们在创立咱们的TableAdapter时的高档选项中挑选了“生成刺进,更新,和删去句子” 这个选项,ProductsTableAdapter 包括了一个 Update()办法,该办法完成了批更新形式。具体地说,TableAdapter包括了一个Update() 办法,能够传入一个强类型 的DataSet,或许一个强类型的DataTable,或许一个和多个DataRow。假设你在一开始创立TableAdapter时的选项中没有铲除“生成DB直接办法(GenerateDBDirectMethods)”复选框的话,DB直接模 式也会经过Insert(),Update()和Delete()办法来完成。

这两种数据修正形式都运用了TableAdapter的InsertCommand,UpdateCommand, 和DeleteCommand特点来向数据库宣布对应的INSERT,UPDATE和DELETE指令。你能够在DataSet规划器里点击TableAdapter,然后在特点窗口检查和改 动InsertCommand,UpdateCommand, 和DeleteCommand特点。(承认你挑选了TableAdapter,而且ProductsTableAdapter对象是特点窗口中下拉框里被选中的项)

ASP.NET 2.0数据教程:刺进,更新和删去数据  2.0 第3张

图23: TableAdapter包括InsertCommand,UpdateCommand, 和DeleteCommand等特点

想检查或改动这些数据库指令的特点的话,点击CommandText子特点,这会发动对应的查询生成器。

ASP.NET 2.0数据教程:刺进,更新和删去数据  2.0 第4张

图 24: 在查询生成器里装备刺进,更新,删去句子

下面的编码比如演示了怎么运用批更新形式来把没被停止的,且库存等于或少于25个单元的产品的价格加倍:

  1. NorthwindTableAdapters.ProductsTableAdapter
  2. productsAdapter=
  3. newNorthwindTableAdapters.ProductsTableAdapter();
  4. //Foreachproduct,doubleitspriceifitisnotdiscontinued
  5. and
  6. //thereare25itemsinstockorless
  7. Northwind.ProductsDataTableproducts=productsAdapter.GetProducts();
  8. foreach(Northwind.ProductsRowproductinproducts)
  9. if(!product.Discontinued&&product.UnitsInStock
  10. <=25)
  11. product.UnitPrice*=2;
  12. //Updatetheproducts
  13. productsAdapter.Update(products);

下面的编码演示怎么运用DB直接形式删去一个产品,更新一个产品,然后增加一个新的产品:

C#

  1. NorthwindTableAdapters.ProductsTableAdapter
  2. productsAdapter=new
  3. NorthwindTableAdapters.ProductsTableAdapter();
  4. //DeletetheproductwithProductID3
  5. productsAdapter.Delete(3);
  6. //UpdateChai(ProductIDof1),settingtheUnitsOnOrderto
  7. 15
  8. productsAdapter.Update("Chai",1,1,"10boxesx20bags",
  9. 18.0m,39,15,10,false,1);
  10. //Addanewproduct
  11. productsAdapter.Insert("NewProduct",1,1,
  12. "12tinspercarton",14.95m,15,0,10,false);

创立自定义的刺进,更新,删去办法

用DB直接法生成的Insert(), Update(),和Delete()办法有时 候会感觉有点不方便,特别是当数据表有许多字段的时分。看一下前面这个编码比如,没有IntelliSense的协助的话,不是很清楚Products表的哪个字段对应Update()和Insert()办法中的哪个输入参数。有时分咱们只需更新一到二个字 段或许需求一个自定义的Insert()办法,这个办法需求回来刚刺进的记载 的IDENTITY(自增)的字段值。

要创立这样的自定义办法,回到DataSet规划器。在TableAdapter上按右鼠标,挑选“增加查询”,然后回 到TableAdapter装备导游。在第二屏上,咱们能够指明要生成的查询的类型。让咱们生成一个增加新 的product(产品)记载,然后回来新增加记载的ProductID值的办法。因而,挑选生成一个刺进(INSERT)型查询。

ASP.NET 2.0数据教程:刺进,更新和删去数据  2.0 第5张

图25: 创立一个给Products表增加新记载的办法

下一个屏显现InsertCommand的CommandText特点。在查询句子后边,增加一个SELECT SCOPE_IDENTITY()的查询,这查询将回来当时同一个操作规模内插 入IDENTITY字段的***那个identity 值。(详见技能文档中关 于SCOPE_IDENTITY()的内容以及为什么你应该http://weblogs.sqlteam.com/travisl/archive/2003/10/29/405.aspx)。承认在增加SELECT句子前,你在INSERT句子后边添一个分号 。

ASP.NET 2.0数据教程:刺进,更新和删去数据  2.0 第6张

图26: 增加查询回来SCOPE_IDENTITY()值

***,把这个新办法命名为InsertProduct。

ASP.NET 2.0数据教程:刺进,更新和删去数据  2.0 第7张

图 27:放办法姓名设成InsertProduct

当你回来DataSet规划器时,你将看到ProductsTableAdapter多了一个新的办法,InsertProduct。假如对应Products表的每个字段,这个新的办法没有对应的参数的话,十分或许的原因是,你忘了给INSERT句子的结束增加一个分号(semi-colon)。从头配 置InsertProduct办法,承认在INSERT和SELECT句子间有个分号。

在ASP.NET 2.0的默许景象下,刺进办法调用的对错查询(non-query)办法,意即,他们只回来受影响的记载数。可是,咱们想要让InsertProduct办法回来一个查询回来的值,而不是受影响的记载数。这能够把InsertProduct办法的ExecuteMode特点改成Scalar(标量)来完成。

ASP.NET 2.0数据教程:刺进,更新和删去数据  2.0 第8张

图 28:把ExecuteMode特点改成Scalar

下面的编码演示怎么运用这个新的InsertProduct办法:

C#

  1. NorthwindTableAdapters.ProductsTableAdapter
  2. productsAdapter=new
  3. NorthwindTableAdapters.ProductsTableAdapter();
  4. //Addanewproduct
  5. intnew_productID=
  6. Convert.ToInt32(productsAdapter.InsertProduct("New
  7. Product",1,1,"12tinspercarton",
  8. 14.95m,10,0,10,false));
  9. //Onsecondthought,deletetheproduct
  10. productsAdapter.Delete(new_productID);

【修改引荐】

  1. 怎么在IIS6.0中布置ASP.NET mvc程序
  2. 用Winform傻瓜式建立asp.net mvc结构
  3. ASP.NET Session失效的编程思路
  4. ASP.NET Session 状况的存储
  5. 了解ASP.NET Web应用程序模型

转载请说明出处
知优网 » ASP.NET 2.0数据教程:刺进,更新和删去数据

发表评论

您需要后才能发表评论