如何获取IDb的IDbCommand输出? (。净)

时间:2009-01-20 20:37:00

标签: c# .net sqlcommand idbcommand

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

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

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

4 个答案:

答案 0 :(得分:3)

您可以使用SQL事件探查器查看与参数一起发送的存储过程的查询/调用内容。

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

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

答案 3 :(得分:0)

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

这样的事情应该这样做:

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

}