快速业务通道

ASP.NET 2.0数据教程之六十七:在TableAdapters里创建新的存储过程

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-05-21
,它 此时将包括ProductsDataTable.

ASP.NET 2.0数据教程之六十七:在TableAdapters里创建新的存储过程

图11:DataSet设计器将显示刚刚添加的ProductsDataTable

第 三步:考察刚刚创建的存储过程

我们在第二步里用向导创建了选择、插入 、更新、删除数据的存储过程.这些存储过程可以通过Visual Studio查看或修改. 打开服务器资源管理器,点到数据库的存储过程文件夹。如图12所示,Northwind 数据库包含了4个新的存储过程,Products_Delete, Products_Insert, Products_Select, and Products_Update.

ASP.NET 2.0数据教程之六十七:在TableAdapters里创建新的存储过程

图12:可以在Stored Procedures文件夹里找到我们创建的4个存储过程

注意:如果你看不到服务器资源管理器,点“View”菜单,选 Server Explorer项.如果你无法找到新创建的存储过程,右击Stored Procedures 文件夹,选“刷新”.

要查看或修改某个存储过程,在服务器 资源管理器里双击其名字或右击该存储过程,选”打开“。如13显示 的是打开Products_Delete存储过程的画面.

ASP.NET 2.0数据教程之六十七:在TableAdapters里创建新的存储过程

图13:可以在Visual Studio里打开并修改存储过程

Products_Delete和Products_Select存储过程的内容很好理解。比如下面 的代码构成了Products_Insert存储过程.

ALTER PROCEDURE dbo.Products_Insert
(
  @ProductName nvarchar(40),
   @SupplierID int,
  @CategoryID int,
  @QuantityPerUnit nvarchar(20),
  @UnitPrice money,
  @UnitsInStock smallint,
  @UnitsOnOrder smallint,
  @ReorderLevel smallint,
  @Discontinued bit
)
AS
  SET NOCOUNT OFF;
INSERT INTO [Products] ([ProductName], [SupplierID], [CategoryID], [QuantityPerUnit],
  [UnitPrice], [UnitsInStock], [UnitsOnOrder], [ReorderLevel], [Discontinued])
VALUES (@ProductName, @SupplierID, @CategoryID, @QuantityPerUnit, @UnitPrice,
  @UnitsInStock, @UnitsOnOrder, @ReorderLevel, @Discontinued);

SELECT ProductID, ProductName, SupplierID, CategoryID, QuantityPerUnit, UnitPrice,
  UnitsInStock, UnitsOnOrder, ReorderLevel, Discontinued
FROM Products
WHERE (ProductID = SCOPE_IDENTITY())

在TableAdapter向导里定义的 SELECT查询返回Products表里的列,这些列又作为存储过程的输入参数并运用到 INSERT statement中.紧接着的是一个SELECT查询,返回Products表里最新添加的 记录的各列的值(包括ProductID)。当使用Batch Update模式添加一个新记录时, 刷新功能是很有用的。因为它将最新添加的ProductRow instances实例的 ProductID属性赋值为数据库指派的自增值.

下面的代码说明了该功能.代 码创建了基于NorthwindWithSprocs数据集的ProductsTableAdapter以及 ProductsDataTable。要向数据库添加一个新的产品,我们要创建一个 ProductsRow instance实例,对其赋值,并调用TableAdapter的Update方法,再 传递给ProductsDataTable.在内部,TableAdapter的Update方法遍历传递给 DataTable的所有ProductsRow instance实例(在本例,只有一个。因为我们只添 加了一个产品),并执行相应的insert, update, 或delete命令。此时,执行 Products_Insert存储过程,其向Products表添加一条新记录,并返回该记录的详 细信息,然后更新ProductsRow instance实例的ProductID值。Update方法完成后 ,我们就可以通过ProductsRow的ProductID属性访问新添加记录的ProductID值了 .

// Create the ProductsTableAdapter and ProductsDataTable
NorthwindWithSprocsTableAdapters.ProductsTableAdapter productsAPI =
  new NorthwindWithSprocsTableAdapters.ProductsTableAdapter ();
NorthwindWithSprocs.ProductsDataTable products =
  new NorthwindWithSprocs.Produ

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号