我有一个SqlCommand对象,我执行它的ExecuteNonQuery方法。查询失败,但我看不到如何获取调试它的查询。你能帮帮我吗?
更新我目前正在使用Wireshark(tcpdump)来读取命令,但我认为这不是最佳解决方案
更新 CommandText属性仅提供存储过程名称。我想要整个命令,带参数。
答案 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***);
}