在ASP.NET 2.0中操作数据之七十二:调试存储过程(2)

/uploads/allimg/200612/1H6235a3_0.png


图2:调试器调试完第一条Statement后就中止了

  希望一次只调试一条statement语句的话,点击工具栏上的“Step Over”按钮或按F10键。由于Products_SelectByCategoryID存储过程只包含了一条SELECT statement,所以按F10键将跨过这条语句并完成存储过程的执行。执行完毕后,其结果将显示在 Output窗口里,调速器也就中止了.

注意:T-SQL调试发生在statement级别,但对SELECT statement无效

第二步:为Website设置应用程序调试

  直接在服务器资源管理器里调试存储过程时需要手动设置,但很多时候我们感兴趣的是,当在ASP.NET应用程序里调用存储过程时才对其进行调试。当一个设置了断点的存储过程被应用程序调用,在执行过程中将遇到这个断点。我们可以查看和改变存储过程的参数值,就像我们在第一步做的那样.

  不过在次此之前我们需要将ASP.NET web应用程序与SQL Server调试器联系起来.在解决方案资源管理器里,在website名称(ASPNET_Data_Tutorial_74_CS)上右键单击,选“Property Pages”项,再在左边选“Start Options”,选中Debuggers区域的SQL Server选择框,如图3:

/uploads/allimg/200612/1H6233205_0.png


图3:在应用程序的属性页选择SQL Server方框

  另外,我们还要更新数据库连接字符串以禁用“连接池”。当关闭一个数据库的连接时,一个对应的SqlConnection对象将存放在连接池里。当建立一个数据库连接时,就可以重新获取该SqlConnection对象而用不着再创建一个新的连接.连接池提高了执行性能,默认时,其处于激活状态.不过在调试时我们将关闭连接池,因为处理从连接池检索来的连接时,不能正确的建立相应的调试基础构造(debugging infrastructure).

  要禁用连接池的话,更新Web.config文件的NORTHWNDConnectionString,包含一个“Pooling=false”设置.

<connectionStrings> <add connectionString= "Data Source=./SQLEXPRESS;AttachDbFilename=|DataDirectory|/NORTHWND.MDF; Integrated Security=True;User Instance=True;Pooling=false" providerName="System.Data.SqlClient" /> </connectionStrings>

  注意:一旦你完成从ASP.NET应用程序对SQL Server的调试后,务必还原连接池,在连接字符串里将Pooling设置删除或设置为“Pooling=true”.

  完成设置后,我们还需要对存储过程添加一个断点,并开始调试

第三步:添加断点并调试

  打开Products_SelectByCategoryID存储过程,在SELECT  statement的开头部分设置断点。方法点击边框恰当的地方或将光标放在SELECT  statement开始的地方再按F9。如图9所示,断点在边框呈现为一个红色圆点.

/uploads/allimg/200612/1H6242247_0.png


图4:在Products_SelectByCategoryID存储过程设置断点

  为了在客户端程序对一个 SQL 数据库对象进行调试,我们有必要设置数据库支持“应用程序调试”(application debugging),在服务器资源管理器里点到NORTHWND.MDF节点,右键单击,选“Application Debugging”.

/uploads/allimg/200612/1H624a05_0.png


图5:确保选中Application Debugging 项

  当设置好断点且激活“Application Debugging ”项时,我们就可以从ASP.NET 应用程序调用存储过程来进行调试。要调试的话,在“调试”菜单里选“开始调试”,或点 F5或点工具栏里的绿色小图标。这将开启调试器.

  Products_SelectByCategoryID存储过程是在第68章创建的,其对应的页面(~/AdvancedDAL/ExistingSprocs.aspx)包含了一个GridView控件,以显示该存储过程返回的结果.在浏览器里登录该页面,当执行过程遇到设置的断点时页面将返回到Visual Studio,就像在第一步看到的那样,我们可以进入存储过程的statements,查看并修改参数值.

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wjwywz.html