从SqlCommand对象发送什么SQL

Jus*_*808 2 c# sql asp.net sqlcommand

我在基于c#的asp.net页面上有一个SqlCommand对象.SQL和传递的参数在大多数情况下都在工作.我有一个案例不起作用,我收到以下错误:

字符串或二进制数据将被截断.该语句已终止.

我理解错误,但数据库中的所有列都应足够长,以容纳所有发送的内容.

我的问题,

有没有办法看到发送到数据库的实际SQL是从SqlCommand对象?我希望能够在发生错误时通过电子邮件发送SQL.

谢谢,贾斯汀

juh*_*arr 8

虽然你无法插入像Enterprise Manager这样的东西来运行它可以用于日志记录.

public static string ToReadableString(this IDbCommand command)
{
    StringBuilder builder = new StringBuilder();
    if (command.CommandType == CommandType.StoredProcedure)
        builder.AppendLine("Stored procedure: " + command.CommandText);
    else
        builder.AppendLine("Sql command: " + command.CommandText);
    if (command.Parameters.Count > 0)
        builder.AppendLine("With the following parameters.");
    foreach (IDataParameter param in command.Parameters)
    {
        builder.AppendFormat(
            "     Paramater {0}: {1}",
            param.ParameterName,
            (param.Value == null ? 
            "NULL" : param.Value.ToString())).AppendLine();
    }
    return builder.ToString();
}
Run Code Online (Sandbox Code Playgroud)


Joh*_*ers 7

您需要使用SQL Server Profiler来查看来自应用程序的内容.我相信它可以向您展示SQL和参数,您需要看到它们.

  • 这个工具应该是你最好的朋友. (3认同)