1

我有一个 SqlCommand 对象,我执行它的 ExecuteNonQuery 方法。查询失败,但我看不到如何获取查询来调试它。你可以帮帮我吗?

更新我目前正在使用 Wireshark (tcpdump) 来读取命令,但我认为这不是最好的解决方案

更新CommandText 属性仅提供存储过程名称。我想要带有参数的整个命令。

4

4 回答 4

3

您可以使用 SQL Profiler 查看与参数器一起发送的对存储过程的查询/调用是什么。

于 2009-01-20T20:39:31.333 回答
0

您可以获得 SqlCommand 的 CommandText 属性的值吗?如果抛出异常,您可以捕获它,并访问 CommandText 属性,该属性将为您提供 SQL 命令,就像您设置它一样。当然,如果它包含参数,则不会将参数替换为适当的值。

于 2009-01-20T20:39:52.813 回答
0

如果您还想查看参数,那么您必须查看命令对象的 Parameters 属性(不仅仅是 CommandText),并查看此集合中的每个参数以提取值和数据类型,如果您对此感兴趣的话在。

现在,听起来您要调试的是存储过程本身,而不是 C# 代码,对吗?如果是这种情况,您需要将 Visual Studio 调试器附加到 SQL Server 以调试 T-SQL 代码。我知道你可以用 Oracle 做到这一点,所以我假设你应该能够用 SQL Server 开箱即用地做到这一点。

于 2009-01-20T20:48:30.237 回答
0

无论如何,您可能应该在 SQL 周围使用 try/catch 块,但这样做的好处是您可以轻松地返回 SQL 命令字符串以及错误。

这样的事情应该这样做:

try
{
    ***Execute your SQL query here***
}
catch (Exception e)
{
    Console.WriteLine(e.ToString());
    Console.WriteLine(***My SQL command string***);

}
于 2009-01-20T21:38:46.453 回答