📄 在 visual studio _net 中使用 sql server 2000 生成数据库应用程序.htm
字号:
<H3 class=dtH1><A name=sql_builddbappsinvsnet_topic2c></A>数据库设计器</H3>
<P>数据库设计器是一个图形界面,可用于添加或修改数据库表、关系、索引、键和约束等。</P>
<BLOCKQUOTE class=dtBlock><B><B class=le>注意:</B></B>数据库设计器要求使用 Visual
Studio .NET Enterprise Edition。</BLOCKQUOTE>
<P>您可以为给定的数据库创建任意数目的关系图,一个表可以出现在任意数目的关系图中。这些关系图还可以用来记录数据库的设计。</P>
<P>使用 SQL Server 数据库关系图时,需要注意一些事项。有关详细信息,请参阅 Visual Studio .NET 文档中的“SQL
Server 数据库的数据库设计器注意事项”。<B></B>该主题包含了更改数据类型、区分大小写以及其他信息。</P>
<P><B>创建数据库关系图</B>
<OL type=1>
<LI>打开数据库设计器:在服务器资源管理器的数据库节点下,右键单击 <B>Database</B>
<B>Diagrams</B>(数据库关系图),然后单击 <B>New</B>
<B>Diagram</B>(新建图表)。将打开数据库设计器,并显示 <B>Add
Table</B>(添加表)对话框,从中可以将现有表添加到关系图中。
<LI>将 <B>Customers</B> 表和 <B>ServiceCalls</B> 表添加到关系图中,然后单击
<B>Close</B>(关闭)。
<LI>关闭数据库设计器,然后保存该关系图(如果需要)。 </LI></OL>
<P>创建关系图后,您可以右键单击关系图的背景将新表添加到关系图或数据库中。也可以右键单击一个表以维护列、键、索引、约束和关系等。数据库设计器与
SQL Server 企业管理器中的关系图工具非常类似(参阅图 8)。</P>
<P class=fig><IMG alt=""
src="在 Visual Studio _NET 中使用 SQL Server 2000 生成数据库应用程序.files/sql_builddbappsinvsnet_08.gif"
border=0></P>
<P class=label><B>图 8:数据库设计器关系图窗格</B></P>
<H2 class=dtH1><A name=sql_builddbappsinvsnet_topic3></A>示例应用程序</H2>
<P>为了演示其余的可视化数据库工具和数据访问类,我们将使用刚刚创建的 <B>ServiceCall</B> 数据库生成一个示例应用程序。</P>
<P>要开始示例应用程序,需要创建一个新的 Visual Studio .NET 项目。</P>
<P><B>创建新项目</B>
<OL type=1>
<LI>在 <B>File</B>(文件)菜单中,选择 <B>New</B>(新建),然后单击 <B>Project</B>(项目)。
<LI>在 <B>Project Types</B>(项目类型)下,单击 <B>Visual Basic Projects</B>(Visual
Basic 项目),然后在 <B>Templates</B>(模板)下,单击 <B>Windows
Application</B>(Windows 应用程序)。
<LI>将项目命名为 <I>ServiceCall</I>,然后单击
<B>OK</B>(确定)。这样便创建了一个解决方案和一个项目,两者都名为“ServiceCall”。每个 Visual Studio .NET
解决方案都可以包含一个或多个项目。
<LI>打开服务器资源管理器窗口:在 <B>View</B>(视图)菜单中,单击 <B>Server</B>
<B>Explorer</B>(服务器资源管理器)。如果展开 Data Connections(数据连接)节点,可以看到先前创建的指向
ServiceCall<B></B> 数据库的连接。 </LI></OL>
<P>生成此示例应用程序的第一步是创建一个用户定义的函数,以计算一个服务调用的总成本 ((LaborRate * Hours) +
PartsCost)。用户定义的函数可以是标量值函数或表值函数(创建用户定义的函数要求使用 Visual Studio .NET
Enterprise Edition)。标量值函数返回一个标量数据类型的单个值,并且可以显示在任何显示列名称的查询中。表值函数返回一个表,可用于
Transact-SQL 查询的 FROM 子句中。在 Visual Studio .NET 中,可以创建三种类型的用户定义函数:
<UL type=disc>
<LI><B>标量值函数</B> - 返回单个标量值的函数。
<LI><B>内联函数</B> - 一种表值函数,返回通过单个 SELECT 语句定义的表值。
<LI><B>表值函数</B> - 一种表值函数,返回一个通过多个 Transact-SQL 语句定义的表。表值函数也称为多语句函数。
</LI></UL>
<P><B>创建函数</B>
<OL type=1>
<LI>在服务器资源管理器中刚刚创建的连接下,右键单击 <B>Functions</B>(函数)节点,然后选择 <B>New
Scalar-valued function</B>(新建标量值函数)。将打开 SQL
编辑器,该编辑器用于创建和维护函数及存储过程。系统提供了一个模板帮助您创建函数。
<LI>复制以下代码并将其粘贴到 SQL 编辑器中以创建函数:<PRE class=code>Create FUNCTION dbo.ComputeServiceCallTotal
(@LaborRate money = 0,
@Hours float = 0,
@PartsCost money = 0)
RETURNS money
AS
BEGIN
RETURN ((@LaborRate * @Hours) + @PartsCost)
END
</PRE>
<LI>单击 <B>Save</B>(保存)保存函数,或者在 <B>File</B>(文件)菜单中,单击 <B>Save
<<I>function name></I></B>(保存 <<I>函数名称></I>)。函数将作为对象保存在数据库中。
</LI></OL>
<H3 class=dtH1><A name=sql_builddbappsinvsnet_topic3a></A>SQL 编辑器</H3>
<P>SQL 编辑器使用颜色代码区分 Transact-SQL
关键字,从而尽可能减少语法错误并使代码更易于阅读。它还提供了用来创建新函数和存储过程的模板。SQL 编辑器还在每个 Transact SQL
语句的周围放置了细线框,用于将 Transact-SQL 代码分隔成命令段,并标识可以使用查询和视图设计器生成和修改的 Transact-SQL
语句块。</P>
<H3 class=dtH1><A name=sql_builddbappsinvsnet_topic3b></A>查询和视图设计器</H3>
<P>为了演示查询和视图设计器是如何工作的,我们将在服务器资源管理器中创建一个存储过程,该存储过程使用了我们刚刚创建的函数。</P>
<P><B>创建存储过程</B>
<OL type=1>
<LI>在 ServiceCall 连接下,右键单击 Stored Procedures(存储过程)节点,然后单击 New Stored
Procedure(新建存储过程)。这将打开 SQL 编辑器窗口,其中带有一个新的存储过程模板。
<P class=fig1><IMG alt=""
src="在 Visual Studio _NET 中使用 SQL Server 2000 生成数据库应用程序.files/sql_builddbappsinvsnet_09.gif"
border=0>
<P class=label><B>图 9:创建存储过程模板</B> </P>
<LI>在 SQL 编辑器窗口中,为 <B>BrowseInvoiceTotals</B> 存储过程键入以下代码: <PRE class=code>Create PROCEDURE dbo.BrowseInvoiceTotals as
Declare @TotalInvoice as money
Set @TotalInvoice = dbo.ComputeServiceCallTotal(50, 5, 200)
Select c.CustomerID, c.CustomerName, sc.ServiceDate,
dbo.ComputeServiceCallTotal(sc.LaborRate, sc.Hours, sc.PartsCost)
as TotalInvoice
From Customers c
Inner Join ServiceCall sc on c.CustomerID = sc.CustomerID
Return
</PRE>
<BLOCKQUOTE class=dtBlock><B class=le>注意:</B>用来声明和计算硬编码的
<B>@TotalInvoice</B> 值的代码仅用于演示目的。</BLOCKQUOTE>
<LI>完成存储过程后,单击 <B>File</B>(文件)菜单中的 <B>Save</B>(保存),将存储过程保存在数据库中。
</LI></OL>
<P>请注意 SELECT 语句周围的细线框。在 Transact-SQL 查询框中单击右键,然后单击 <B>Design</B> <B>SQL
Block</B>(设计 SQL 块)。这将启动查询和视图设计器,可用于以图形化的方式生成或修改查询(参阅图 10)。 </P>
<P class=fig>
<P><A
href="http://msdn.microsoft.com/library/en-us/dnsql2k/html/sql_builddbappsinvsnet_10.gif"
target=_Top><IMG alt=单击此处查看大图像
src="在 Visual Studio _NET 中使用 SQL Server 2000 生成数据库应用程序.files/sql_builddbappsinvsnet_10_thumb.gif"
border=0></A></P>
<P></P>
<P class=label><B>图 10:查询和视图设计器表(单击图片以查看大图像) </B></P>
<P>查询和视图设计器包括四个部分。最上面的部分包含关系图窗格,其中显示正在查询的表。您可以添加或删除表、选择或取消选择列、添加或删除表联接以及在此部分中按列指定顺序。第二部分包含网格窗格,其中显示查询中的列,并允许您选择排序类型和排序顺序、过滤标准以及按列分组。第三部分包含
SQL 窗格,其中显示查询的 SQL
语法。如果在此窗格中修改查询,其他窗格将更新以反映这些更改。如果对查询所做的更改无法在其他窗格中表示出来,这些更改将不可用。第四部分包含结果窗格,其中显示执行查询后的查询结果。</P>
<P>查询和视图设计器对于视图和查询的工作原理相同,只是有些功能是专用于视图的。其中一个专用于 SQL Server 2000
的功能就是创建索引视图。</P>
<P><B>创建索引视图 </B>
<OL type=1>
<LI>打开服务器资源管理器,右键单击 <B>Views</B>(视图),然后单击 <B>New View</B>(新建视图)。将显示
<B>Add Table</B>(添加表)对话框。
<LI>将 <B>Customers</B> 表添加到视图中,然后关闭 <B>Add Table</B>(添加表)对话框。
<LI>在关系图窗格中,选中 <B>CustomerID</B> 复选框和 <B>CustomerName</B> 复选框。
<LI>要使用索引,请右键单击关系图窗格的背景,然后单击 <B>Manage</B> <B>Indexes</B>(管理索引)。这将打开
<B>Indexes</B>(索引)对话框,从中可以指定关联的索引。您必须对视图中的表具有适当权限才能创建索引视图。
<LI>关闭 <B>Indexes</B>(索引)对话框,然后关闭查询和视图设计器。 </LI></OL>
<P>您也可以使用查询设计器浏览表和更新表的内容。
<UL type=disc>
<LI>在服务器资源管理器中,依次展开 ServiceCall Data Connection(ServiceCall 数据连接)节点和
Tables(表)节点并右键单击一个表,然后单击 <B>Retrieve Data from Table</B>(从表中检索数据)。
</LI></UL>
<P>与表内容一同出现的数据网格就是查询设计器数据网格。请注意,一个工具栏将与数据网格一同打开,该工具栏可用于访问关系图窗格、SQL
窗格、网格窗格以及查询设计器的结果窗格。同样,这些功能也非常类似于企业管理器中的功能。</P>
<H3 class=dtH1><A name=sql_builddbappsinvsnet_topic3c></A>调试存储过程</H3>
<P>服务器资源管理器中另外一个强大的功能是存储过程调试。要调试 <B>BrowseInvoiceTotals</B>
存储过程,请打开服务器资源管理器,然后定位到 ServiceCall 连接中的 Stored Procedure(存储过程)节点。右键单击
<B>BrowseInvoiceTotals</B>,然后单击 <B>Step Into Stored
Procedure</B>(单步执行存储过程)。也可以双击存储过程打开编辑器,然后单击 <B>Database</B>(数据库)菜单中的
<B>Step Into Stored Procedure</B>(单步执行存储过程)。</P>
<P>按 <B>F11</B> 键单步执行存储过程,并注意当执行到语句 <I>Set @TotalInvoice =
dbo.ComputeServiceCallTotal(50, 5, 200)</I>
时,调试器将离开存储过程并进入该函数。完成函数的调试后,调试器将返回存储过程。可以将鼠标指针移到 <B>@TotalInvoice</B>
变量之上,或者右键单击该变量并设置一个观察变量,以查看该变量的内容。也可以在 <B>Locals</B>(本地变量)窗口中查看变量的内容:在
<B>Debug</B>(调试)菜单中,突出显示 <B>Windows</B>(窗口),然后单击 <B>Locals</B>(本地变量)。在图 11
中,执行 Set 语句后,<B>Locals</B>(本地变量)窗口中显示 <B>@TotalInvoice</B> 的值为
450.0000。同样,从 Visual Studio .NET IDE 中也可以访问 Transact-SQL 语句调试工具。</P>
<P class=fig>
<P><A
href="http://msdn.microsoft.com/library/en-us/dnsql2k/html/sql_builddbappsinvsnet_11.gif"
target=_Top><IMG alt=单击此处查看大图像
src="在 Visual Studio _NET 中使用 SQL Server 2000 生成数据库应用程序.files/sql_builddbappsinvsnet_11_thumb.gif"
border=0></A></P>
<P></P>
<P class=label><B>图 11:SQL 调试器窗口表(单击图片以查看大图像)</B></P>
<P>SQL 调试器具有某些局限性,其中包括:
<UL type=disc>
<LI>表变量不能在 <B>Locals</B>(本地变量)窗口中显示。
<LI>Sql_variant、text、ntext、image 和 cursor 变量可以在
<B>Locals</B>(本地变量)窗口中显示,但只能用于显示。
<LI>不支持大于 64 KB 的存储过程。
<LI>不支持超过 32 层嵌套存储过程调用。
<LI>不支持向一个存储过程传递的参数超过 1023 个。 </LI></UL>
<P>有关其他局限性,请参阅 <A
href="http://msdn.microsoft.com/library/en-us/vsdebug/html/_core_SQL_Debugging_Limitations.asp">SQL
Debugging Limitations</A>(英文)。</P>
<BLOCKQUOTE class=dtBlock><B class=le>注意:</B>SQL 调试器使用分布式组件对象模型 (DCOM)
进行客户端计算机和 SQL Server 之间的通信。为了使调试器能够正常工作,必须使用 Dcomcnfg.exe 设置正确的 DCOM
权限。有关详细信息,请参阅 <A
href="http://msdn.microsoft.com/library/en-us/trblsql/tr_servtools_5cfm.asp">Troubleshooting
the Transact-SQL Debugger</A>(英文)。此外,要进行调试,SQL Server 不能作为系统帐户运行。与
MSSQLSERVER 服务相关联的登录必须是一个有效的用户帐户。</BLOCKQUOTE>
<H3 class=dtH1><A name=sql_builddbappsinvsnet_topic3d></A>数据集</H3>
<P>现在,我们已具备 ServiceCall
数据库和连接、一个用户定义的函数以及一个存储过程。下一步,我们将使用该存储过程来创建一个用于填充数据网格的数据集。</P>
<P><B>创建数据集</B>
<OL type=1>
<LI>打开工具箱:在 <B>View</B>(视图)菜单中,单击 <B>Toolbox</B>(工具箱)。
<LI>在工具箱中,单击 <B>Data</B>(数据)选项卡,然后将一个 <B>SqlDataAdapter</B> 控件拖到
<B>Form1</B> 上。这将在 <B>Form1</B> 的设计窗口底部放置一个 <B>SqlDataAdapter1</B>
图标,并启动数据适配器配置向导。数据适配器配置向导收集与适配器将要管理的数据有关的信息。
<LI>当向导提示您提供要使用的数据连接时,请指定 ServiceCall 连接。
<P class=fig1><IMG alt=""
src="在 Visual Studio _NET 中使用 SQL Server 2000 生成数据库应用程序.files/sql_builddbappsinvsnet_12.gif"
border=0>
<P class=label><B>图 12:选择数据连接属性表</B> </P>
<LI>下一步,从以下选项中选择一种查询类型:
<UL type=disc>
<LI><B>Use SQL statements</B>(使用 SQL 语句)- 提供 Transact-SQL
语句或使用查询生成器以图形方式设计查询。
<LI><B>Create new stored procedures</B>(创建新存储过程)- 向导自动基于自身提供的
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -