如何在使用ExecuteNonQuery()时收到错误消息?

Hai*_*ihi 15 c# sql ado.net sqlcommand

我正在以这种方式执行命令:

var Command = new SqlCommand(cmdText, Connection, tr);

Command.ExecuteNonQuery();
Run Code Online (Sandbox Code Playgroud)

在命令中有一个错误,但.NET不会抛出任何错误消息.我怎么知道命令没有正确执行,以及如何获得异常?

Mar*_*ell 18

.NET确实引发了错误消息...... 如果严重性为16或更高(因为它抛出异常) - 消息将在异常中.Message.如果您使用RAISERROR较低的严重性(或使用PRINT),则必须InfoMessage在连接上订阅该事件.


Kev*_*vin 14

如果您的错误严重性为16或更高,则只能在C#中获得异常.如果您使用的是PRINT,则不会在.NET中出现异常.

如果您可以编辑raise错误代码,这将导致C#中的SqlException:

RAISERROR('Some error message', 16, 1)
Run Code Online (Sandbox Code Playgroud)

然后,您可以获取SqlException.Errors集合中的每个单独错误.

只是一个注意事项 - RAISERROR如果你RETURN之后不直接,SQL Server将继续运行命令.如果您不返回,则可能会收到多个错误.