Matt Mannion 和 Jon Rauschenberger Clarity Consulting Inc. 2002 年 3 月
适用于: Microsoft? SQL Server? 2000 Microsoft Visual Studio? .NET
摘要:如何使用 Visual Studio .NET 工具创建数据库对象和 Transact-SQL 存储过程。
目录
- 简介
- 可视化数据库工具
- 示例应用程序
- SQL 编辑器
- 查询和视图设计器
- 调试存储过程
- 数据集
- 使用 ADO.NET 访问 SQL Server
- XML 和 Visual Studio .NET
- SQLXML 3.0
- 数据库项目
- 生成创建脚本和导出数据
- 数据库项目命令文件
- 小结
- 附录 1:数据库加载脚本
- 附录 2:更多信息
- 附录 3:关于作者
简介
Microsoft? Visual Studio? .NET 包括一系列工具和数据访问类,使通过 Microsoft SQL Server? 2000 生成数据库应用程序比以前更加容易。现在,开发人员所需的所有工具都包含在 Visual Studio 集成开发环境 (IDE) 中。本白皮书将介绍新的工具和数据类,引导您完成生成数据库应用程序的整个过程,并重点介绍对 SQL Server 2000 新增功能(例如 XML 支持、索引视图和级联引用完整性)的支持。本文还包括一个简单的 Microsoft Visual Basic? 应用程序,用于阐明如何使用这些工具。
前提条件
要生成本文中的示例应用程序,您的计算机上必须安装以下软件:
- Microsoft Windows? 2000 Server
- Visual Studio .NET(有些示例程序注明需要使用 Visual Studio .NET Enterprise Edition)
- SQL Server 2000 Enterprise Edition
还需要使用数据库所有者 (dbo) 权限登录 SQL Server。
可视化数据库工具
Visual Studio .Net IDE 包含一套可视化数据库工具,旨在简化使用 SQL Server 2000 开发数据库应用程序。可视化数据库工具包含以下各项:
- 服务器资源管理器
- 数据库设计器
- 表设计器
- SQL 编辑器
- 查询和视图设计器
以下各节将详细介绍这些工具。
服务器资源管理器
服务器资源管理器是可视化数据库工具以及多数其他工具和设计器的门户。使用服务器资源管理器,您可以连接到 SQL Server 数据库并查看带有 SQL Server 计算机、数据库关系图、表、视图、存储过程和函数等节点的分层结构树状视图。许多开发人员以前需要使用 SQL Server 企业管理器才能完成的任务,现在可以使用服务器资源管理器来完成,而无需再使用企业管理器。
要打开服务器资源管理器,请启动 Visual Studio .NET,然后在 View(视图)菜单中单击 Server Explorer(服务器资源管理器)。
第一次打开服务器资源管理器时,会看到两个节点,如图 1 所示。第一个节点 Data Connections(数据连接)列出了计算机上以前创建的所有数据库连接。第二个节点 Servers(服务器)列出了当前网络上的所有服务器。Servers(服务器)节点下有一个名为 SQL Servers(SQL 服务器)的节点,使用该节点可以访问可视化数据库工具而无需创建数据连接。创建数据连接后,也可以通过 Data Connections(数据连接)节点访问可视化数据库工具。

图 1:服务器资源管理器(单击图片以查看大图像)
创建新的 SQL Server 数据库
使用 Visual Studio .NET Enterprise Edition,用户可以在 Visual Studio .NET IDE 中创建新的 SQL Server 数据库。在以下过程中,我们将创建一个名为 ServiceCall 的示例数据库。
创建新的数据库
- 打开服务器资源管理器:在 View(视图)菜单中,单击 Server Explorer(服务器资源管理器)。
- 右键单击 Data Connections(数据连接),然后单击 Create New SQL Server Database(创建新 SQL Server 数据库)。将打开 Create Database(创建数据库)对话框。
图 2:创建新 SQL Server 数据库
- 在 Create Database(创建数据库)对话框中,执行以下操作:
- 在 Server(服务器)中,键入服务器的名称。
- 在 Login Name(登录名)和 Password(密码)中,输入新数据库的身份验证信息。
- 在 New Database Name(新数据库名)中,键入 ServiceCall,然后单击 OK(确定)。
图 3:Create Database(创建数据库)对话框
新数据库在服务器上使用默认设置创建,并带有指向新数据库的数据连接。单击数据库旁边的加号 (+) 可以展开数据库关系图、表、视图、存储过程和函数等节点。
表设计器
可以使用表设计器创建和维护来自服务器资源管理器的数据库表。
要启动表设计器,请右键单击 Tables(表)节点(该节点位于创建 ServiceCall 数据库时所创建的数据库连接下),然后单击 New Table(新建表)。
表设计器包括两部分。顶部包含一个网格,从中可以定义表中的列。Data Type(数据类型)下拉列表包括所有有效的数据类型,其中一些类型专用于 SQL Server 2000(Bigint 和 Sql_variant)。底部包含一个选项卡,从中可以指定其他列特性,就像在企业管理器的表设计器中一样。
创建表
在以下过程中,我们将为 ServiceCall 数据库创建 Customers 表和 ServiceCall 表。
创建 Customers 表和 ServiceCall 表
- 如图 4 所示,定义 Customers 表的列。

图 4:Customers 表的表设计器属性表(单击图片以查看大图像)
- 右键单击 CustomerID 列,然后单击 Set Primary Key(设置主键);或者使用工具栏上的 Set Primary Key(设置主键)控件。
- 单击 Save(保存),然后在 Choose Name(选择名称)对话框中键入 Customers。
- 对 ServiceCall 表重复此过程,将 ServiceCallID 设置为主键,将 Identity 属性设置为 Yes,如图 5 所示。

图 5:ServiceCall 表的表设计器属性表(单击图片以查看大图像)
除了在表中定义列和键以外,用户还可以使用表设计器创建和修改表的关系、约束和索引等。
创建 ServiceCall 表和 Customers 表之间的关系
- 打开 ServiceCall 表的表设计器,右键单击列网格中的任意位置,然后选择 Relationships(关系);或者使用工具栏上的 Manage Indexes and Keys(管理索引和键)控件。屏幕将显示 Property Pages(属性页)对话框。
- 单击 Relationships(关系)选项卡,然后单击 New(新建)。关系名称默认为 FK_ServiceCall_Customers。
- 将主键表定义为 Customers,将主键列定义为 CustomerID。
- 将外键表定义为 ServiceCall,将外键列定义为 CustomerID。
图 6:Property Pages(属性页)对话框
- 单击 Close(关闭),然后单击 Save(保存)。
这样,SQL Server 将确保 ServiceCall 数据库不会在 ServiceCall 表中包含这样的行,即其 CustomerID 不会出现在 Customers 表中。
在表设计器中,一个专门用于 SQL Server 2000 的功能是定义级联引用完整性。
在表之间声明引用完整性
- 在服务器资源管理器中,右键单击 Customers 表,然后选择 Design Table(设计表)。将打开表设计器。
- 单击 Relationships(关系)。将显示 Property Pages(属性页)对话框,其中已选定 Relationships(关系)选项卡。在对话框底部,有以下两个选项:
- Cascade Update Related Fields(级联更新相关字段)- 在主键更新后,使数据库将新键值传播到相应的外键。
- Cascade Delete Related Records(级联删除相关的记录)- 删除主键表中的行时,使数据库从外键表中删除相应的行。
- 选择 Cascade Delete Related Records(级联删除相关的记录),单击 Close(关闭),然后单击 Save(保存)。设置此选项将使 SQL Server 从 ServiceCall 表中删除与从 Customers 表中删除的每行的 CustomerID 匹配的所有行。
注意:系统将显示一个 Save Warning(保存警告)对话框,其中显示消息“以下各表将保存到数据库中。是否继续?”。将列出 Customers 表和 ServiceCall 表。单击 Yes(是)。显示保存警告信息是因为打开了 Warn about Tables Affected(表受到影响时警告)选项;您可以在 Save Warning(保存警告)对话框中关闭此选项。
图 7:选中了 Cascade Delete Related Records(级联删除相关的记录)的 Relationships(关系)选项卡
重要信息:要使用示例数据填充表,请在 SQL 查询分析器中运行附录 1 中的数据库加载脚本。
数据库设计器
数据库设计器是一个图形界面,可用于添加或修改数据库表、关系、索引、键和约束等。
注意:数据库设计器要求使用 Visual Studio .NET Enterprise Edition。
您可以为给定的数据库创建任意数目的关系图,一个表可以出现在任意数目的关系图中。这些关系图还可以用来记录数据库的设计。
使用 SQL Server 数据库关系图时,需要注意一些事项。有关详细信息,请参阅 Visual Studio .NET 文档中的“SQL Server 数据库的数据库设计器注意事项”。该主题包含了更改数据类型、区分大小写以及其他信息。
创建数据库关系图
- 打开数据库设计器:在服务器资源管理器的数据库节点下,右键单击 Database Diagrams(数据库关系图),然后单击 New Diagram(新建图表)。将打开数据库设计器,并显示 Add Table(添加表)对话框,从中可以将现有表添加到关系图中。
- 将 Customers 表和 ServiceCalls 表添加到关系图中,然后单击 Close(关闭)。
- 关闭数据库设计器,然后保存该关系图(如果需要)。
创建关系图后,您可以右键单击关系图的背景将新表添加到关系图或数据库中。也可以右键单击一个表以维护列、键、索引、约束和关系等。数据库设计器与 SQL Server 企业管理器中的关系图工具非常类似(参阅图 8)。

图 8:数据库设计器关系图窗格
示例应用程序
为了演示其余的可视化数据库工具和数据访问类,我们将使用刚刚创建的 ServiceCall 数据库生成一个示例应用程序。
要开始示例应用程序,需要创建一个新的 Visual Studio .NET 项目。
创建新项目
- 在 File(文件)菜单中,选择 New(新建),然后单击 Project(项目)。
- 在 Project Types(项目类型)下,单击 Visual Basic Projects(Visual Basic 项目),然后在 Templates(模板)下,单击 Windows Application(Windows 应用程序)。
- 将项目命名为 ServiceCall,然后单击 OK(确定)。这样便创建了一个解决方案和一个项目,两者都名为“ServiceCall”。每个 Visual Studio .NET 解决方案都可以包含一个或多个项目。
- 打开服务器资源管理器窗口:在 View(视图)菜单中,单击 Server Explorer(服务器资源管理器)。如果展开 Data Connections(数据连接)节点,可以看到先前创建的指向 ServiceCall 数据库的连接。
生成此示例应用程序的第一步是创建一个用户定义的函数,以计算一个服务调用的总成本 ((LaborRate * Hours) + PartsCost)。用户定义的函数可以是标量值函数或表值函数(创建用户定义的函数要求使用 Visual Studio .NET Enterprise Edition)。标量值函数返回一个标量数据类型的单个值,并且可以显示在任何显示列名称的查询中。表值函数返回一个表,可用于 Transact-SQL 查询的 FROM 子句中。在 Visual Studio .NET 中,可以创建三种类型的用户定义函数:
- 标量值函数 - 返回单个标量值的函数。
- 内联函数 - 一种表值函数,返回通过单个 SELECT 语句定义的表值。
- 表值函数 - 一种表值函数,返回一个通过多个 Transact-SQL 语句定义的表。表值函数也称为多语句函数。
创建函数
- 在服务器资源管理器中刚刚创建的连接下,右键单击 Functions(函数)节点,然后选择 New Scalar-valued function(新建标量值函数)。将打开 SQL 编辑器,该编辑器用于创建和维护函数及存储过程。系统提供了一个模板帮助您创建函数。
- 复制以下代码并将其粘贴到 SQL 编辑器中以创建函数:
Create FUNCTION dbo.ComputeServiceCallTotal
(@LaborRate money = 0,
@Hours float = 0,
@PartsCost money = 0)
RETURNS money
AS
BEGIN
RETURN ((@LaborRate * @Hours) + @PartsCost)
END
- 单击 Save(保存)保存函数,或者在 File(文件)菜单中,单击 Save <function name>(保存 <函数名称>)。函数将作为对象保存在数据库中。
SQL 编辑器
SQL 编辑器使用颜色代码区分 Transact-SQL 关键字,从而尽可能减少语法错误并使代码更易于阅读。它还提供了用来创建新函数和存储过程的模板。SQL 编辑器还在每个 Transact SQL 语句的周围放置了细线框,用于将 Transact-SQL 代码分隔成命令段,并标识可以使用查询和视图设计器生成和修改的 Transact-SQL 语句块。
查询和视图设计器
为了演示查询和视图设计器是如何工作的,我们将在服务器资源管 [1] [2] [3] [4] 下一页
|