演练:为 Northwind Customers 表创建更新存储过程

在 Visual Studio 文档的一些帮助主题提供有关执行更新。 Northwind 示例数据库中需要额外的存储过程 (insert、 update 和 delete) 数据在 customers 表。

本演练提供创建这些附加存储过程提供说明。 SQL Server的 Northwind 示例数据库。

后续步骤 " 一节本主题后面提供指向演示如何处理这些附加存储过程使用的主题。

在本演练中,您将学习如何执行以下任务:

  • 创建到 Northwind 示例数据库的数据连接。

  • 创建存储过程。

系统必备

若要完成本演练,您需要:

连接到 Northwind 数据库

本演练需要 Northwind 数据库的 SQL Server 版本的连接。以下过程用于创建数据连接提供方向。

说明说明

如果您已经具有 Northwind 数据库的数据连接,可以转到下一节中,创建存储过程。

创建到 Northwind SQL Server 数据库的数据连接

  1. 在**“视图”菜单上单击“服务器资源管理器”/“数据库资源管理器”**。

  2. 右击 数据连接 然后单击 添加连接

  3. 在**“选择数据源”对话框中,单击“Microsoft SQL Server”,然后单击“确定”**。

    如果**“添加连接”对话框打开了,但“数据源”却不是“Microsoft SQL Server (SqlClient)”,则请单击“更改”以打开“选择/更改数据源”对话框,接着单击“Microsoft SQL Server”,然后单击“确定”**。有关更多信息,请参见“选择/更改数据源”对话框

  4. 在下拉列表中单击**“服务器名称”**,或键入 Northwind 数据库所在的服务器的名称。

  5. 根据数据库或应用程序的要求,或者单击 使用 windows 身份验证 或使用特定的用户名和密码登录到运行 SQL Server (SQL Server 身份验证) 的计算机。有关更多信息,请参见添加/修改连接 (Microsoft SQL Server)

  6. 在**“选择或输入一个数据库名”**列表中单击 Northwind 数据库。

  7. 单击**“确定”**。

    该数据连接就会添加到**“服务器资源管理器”/“数据库资源管理器”**中。

创建存储过程

通过运行提供的 SQL 脚本创建存储过程 Northwind 数据库使用 Visual Database Tools 可用在 服务器资源管理器/数据库资源管理器

使用 SQL 脚本创建存储过程

  1. 在**“服务器资源管理器”/“数据库资源管理器”**中,展开 Northwind 数据库。

  2. 右击 存储过程 节点并单击 添加新的存储过程

  3. 下面的代码粘贴到代码编辑器,替换 CREATE PROCEDURE 模板:

    IF EXISTS (SELECT * FROM sysobjects WHERE name = 'SelectCustomers' AND user_name(uid) = 'dbo')
        DROP PROCEDURE dbo.[SelectCustomers]
    GO
    
    CREATE PROCEDURE dbo.[SelectCustomers]
    AS
        SET NOCOUNT ON;
    SELECT CustomerID, CompanyName, ContactName, ContactTitle, Address, City, Region, PostalCode, Country, Phone, Fax FROM dbo.Customers
    GO
    
    IF EXISTS (SELECT * FROM sysobjects WHERE name = 'InsertCustomers' AND user_name(uid) = 'dbo')
        DROP PROCEDURE dbo.InsertCustomers
    GO
    
    CREATE PROCEDURE dbo.InsertCustomers
    (
        @CustomerID nchar(5),
        @CompanyName nvarchar(40),
        @ContactName nvarchar(30),
        @ContactTitle nvarchar(30),
        @Address nvarchar(60),
        @City nvarchar(15),
        @Region nvarchar(15),
        @PostalCode nvarchar(10),
        @Country nvarchar(15),
        @Phone nvarchar(24),
        @Fax nvarchar(24)
    )
    AS
        SET NOCOUNT OFF;
    INSERT INTO [dbo].[Customers] ([CustomerID], [CompanyName], [ContactName], [ContactTitle], [Address], [City], [Region], [PostalCode], [Country], [Phone], [Fax]) VALUES (@CustomerID, @CompanyName, @ContactName, @ContactTitle, @Address, @City, @Region, @PostalCode, @Country, @Phone, @Fax);
    
    SELECT CustomerID, CompanyName, ContactName, ContactTitle, Address, City, Region, PostalCode, Country, Phone, Fax FROM Customers WHERE (CustomerID = @CustomerID)
    GO
    
    IF EXISTS (SELECT * FROM sysobjects WHERE name = 'UpdateCustomers' AND user_name(uid) = 'dbo')
        DROP PROCEDURE dbo.UpdateCustomers
    GO
    
    CREATE PROCEDURE dbo.UpdateCustomers
    (
        @CustomerID nchar(5),
        @CompanyName nvarchar(40),
        @ContactName nvarchar(30),
        @ContactTitle nvarchar(30),
        @Address nvarchar(60),
        @City nvarchar(15),
        @Region nvarchar(15),
        @PostalCode nvarchar(10),
        @Country nvarchar(15),
        @Phone nvarchar(24),
        @Fax nvarchar(24),
        @Original_CustomerID nchar(5)
    )
    AS
        SET NOCOUNT OFF;
    UPDATE [dbo].[Customers] SET [CustomerID] = @CustomerID, [CompanyName] = @CompanyName, [ContactName] = @ContactName, [ContactTitle] = @ContactTitle, [Address] = @Address, [City] = @City, [Region] = @Region, [PostalCode] = @PostalCode, [Country] = @Country, [Phone] = @Phone, [Fax] = @Fax WHERE (([CustomerID] = @Original_CustomerID));
    
    SELECT CustomerID, CompanyName, ContactName, ContactTitle, Address, City, Region, PostalCode, Country, Phone, Fax FROM Customers WHERE (CustomerID = @CustomerID)
    GO
    
    IF EXISTS (SELECT * FROM sysobjects WHERE name = 'DeleteCustomers' AND user_name(uid) = 'dbo')
        DROP PROCEDURE dbo.DeleteCustomers
    GO
    
    CREATE PROCEDURE dbo.DeleteCustomers
    (
        @Original_CustomerID nchar(5)
    )
    AS
        SET NOCOUNT OFF;
    DELETE FROM [dbo].[Customers] WHERE (([CustomerID] = @Original_CustomerID))
    GO
    
  4. 在代码编辑器中选择任意文本,右击选定的文本,然后单击 运行选择

    SelectCustomers、 InsertCustomers、 UpdateCustomers 和 DeleteCustomers 存储过程的 Northwind 数据库创建。

后续步骤

您已经创建了存储过程,请尝试演示如何在中使用它们的以下演练:

How to: Assign Stored Procedures to Perform Updates, Inserts, and Deletes

Walkthrough: Creating LINQ to SQL Classes with the O/R Designer

Walkthrough: Customizing the Insert, Update, and Delete Behavior of Entity Classes

请参见

其他资源

Object Relational Designer (O/R Designer)

LINQ to SQL

在 Visual Studio 中访问数据