如何在C#中获取导致SqlException的实际SQL?

Zug*_*alt 13 c# sql sqlexception

可能重复:
获取导致SQLException的Query/CommandText

我正在处理一些错误处理代码(使用elmah),默认设置只发送错误消息.我想知道抛出错误的实际SQL(即"SELECT*FROM thisTableDoesNotExist")

这是我到目前为止:

if (e.Error.Exception is SqlException)
{
    //if SQL exception try to give some extra information
    SqlException sqlEx = e.Error.Exception as SqlException;
    e.Mail.Body = e.Mail.Body + "<div>" +
                                "<h1>SQL EXCEPTION</h1>" +
                                "<b>Message</b>: " + sqlEx.Message +
                                "<br/><b>LineNumber:</b> " + sqlEx.LineNumber + 
                                "<br/><b>Source:</b> " + sqlEx.Source +
                                "<br/><b>Procedure:</b> " + sqlEx.Procedure +
                                "</div>";
}
Run Code Online (Sandbox Code Playgroud)

我希望能够显示实际的SQL.数据库是SQL Server 2008,SqlException是System.Data.SqlClient.SqlException类型.

Mik*_*las 7

不可能.您需要捕获执行SQL命令的异常,然后将命令文本包含在您自己的自定义异常中.请参阅获取导致SQLException的Query/CommandText.

  • 那么,这是否会使其与该问题重复? (2认同)