现在的位置: 首页 > 综合 > 正文

如何使用VS.NET调试数据库存储过程(转)

2013年02月13日 ⁄ 综合 ⁄ 共 1959字 ⁄ 字号 评论关闭

如何使用VS.NET调试数据库存储过程
作者: techrepublic.com.com
2005-08-26 05:5 PM

 


可以说开发人员是天生的完美主义者,而帮助其完成理想的就是每天所接触的各种开发工具。这些工具从最简单的文本编辑器到IDE环境甚至是操作系统,种类相当丰富。作为一个开发者,我也有自己常用的工具,同时我也很惊讶于很少有开发者能真正了解他们日常使用的开发工具。一个优秀的开发工具可以提供多个小程序所提供的功能,VS.NET就是这方面的一个很好的例子。它可以利用诸如C#以及VB.NET等语言,开发基于.NET架构的应用程序,同时也可以用来编写CSS(层叠样式表)、HTML、XML以及SQL。其中针对SQL的功能是经常被我们忽视的内容,下面我就详细讲解一下VS.NET是如何与SQL协同工作的。

数据库连接
VS.NET的Server Explorer可以非常方便的实现与数据库服务器的连接工作。虽然这种连接不仅限于SQL Server。图A显示的是VS.NET工作区右面的Server Explorer面板。你可以通过View下拉菜单找到该对象,或者在工作区右边点击选项卡来显示Server Explorer。在Server Explorer中右键点击Data Connections,会出现连接到新数据库的选项。图B是连接对话框。其中Test Connection按钮可以方便的测试数据库的可连接性和连接正确性。


图A:Visual Studio .NET的Server Explorer


图B:通过Server Explorer添加一个新的数据库连接

一旦在Server Explorer中添加了连接,它就会出现在Server Explorer的服务器节点中。同时服务器名称和相关选项也会出现在下方。SQL Servers节点可以提供程序访问SQL Server以及其中的数据元素的能力。现在,你差不多已经可以开始调试SQL代码了,不过在这之前还要进行一些设置。

SQL Server设置
SQL Server包含了一种扩展的存储过程,可以用它来控制调试存储过程的访问能力。这个存储过程叫做sp_sdidebug,下面的T-SQL代码可以用来允许一个用户对存储过程进行调试:

USE Master
GRANT EXECUTE
ON sp_sdidebug
TO username

另外,用户必须具备访问数据库和存储过程的权限。一旦做好相关的设置,用户就可以开始真正的调试过程了。实际上,调试过程很简单,只需要在VS.NET的Server Explorer中右键点击存储过程,并选择Step Into Stored Procedure。图C 是一个使用Northwind数据库进行存储过程调试的例子。在这个例子中,存储过程会从数据库中返回十个价格最高的产品。


图C:通过Server Explorer调试存储过程

当调试过程开始后,就跟日常调试C#或VB.NET代码没什么不同了。图D是刚才的存储过程在调试模式下的视图。相应的选项可以通过Debug下拉菜单或者快捷键来实现。以下是几个与调试相关的快捷键:

  • F5:继续
  • Shift + F5:停止调试
  • F11:单步进入
  • F10: 单步跳过
  • Shift + F11: 单步跳出


    图D:调试模式下的存储过程

    另外,可以加入断点和查看点,以监视调试过程。在VS.NET工作区的下方,可以看到调试过程的输出结果。图E 显示了对存储过程进行调试后的VS.NET工作区。从图上我们能看到调试信息:存储过程运行的返回值是0,这表示运行成功。


    图E:运行存储过程后的调试信息

    我们也可以按照图F所示,从调试窗口上的下拉菜单中选择Database Output来显示输出结果。实际的输出和图F差不多。


    图F:查看存储过程的输出结果

    参数
    现实中的存储过程要比我们的例子复杂的多。大部分实际应用的存储过程都可以接受或返回一个或多个参数。用VS.NET的调试器对其调试也非常简单,你可以看到添加不同参数后的代码运行效果。对需要输入参数的存储过程进行调试时,会有一个窗口弹出用来接受参数。

    图G是接收参数的对话框。本例中我选择的是需要输入起始和中止时间的存储过程(年度销售量),它会返回在该时间段内的销售总量。另外,在所输入的参数中,也可以选择NULL或DEFAULT,这可以检查在空值和默认值情况下,存储过程是否会出现问题。


    图G:带参数的调试过程

    总结
    VS.NET对存储过程进行开发、维护和调试的能力,使它完全代替了其它诸如SQL Server的Query Analyzer的工作。这也省去了开发人员在不同开发环境间相互切换以及学习多种开发工具的时间。调试工作是开发过程中的重要环节,因此拥有一个可以对T-SQL代码进行调试的强壮的开发工具可以令程序员更轻松的开发出强大而稳定的存储程序。(责任编辑:刘燕之

  • 抱歉!评论已关闭.