当我运行以下代码段时
try
{
using (SqlConnection conn = new SqlConnection("I'm shy"))
{
conn.Open();
using (SqlCommand cmd = conn.CreateCommand())
{
cmd.CommandText = "PRINT 'A';PRINT 'B';PRINT 'C';RAISERROR('SQL_Error', 18, 1)";
cmd.ExecuteNonQuery();
}
}
}
catch (SqlException ex)
{
MessageBox.Show(ex.Message);
}
我收到以下消息:
SQL_Error
A
B
C
并且ex.Errors
有 4 个条目(SqlError
对应于打印的 3 的 aSqlError.Class
为 0(相对于真正的错误为 18)
但是,如果我替换ExecuteNonQuery
为ExecuteScalar
,我会得到预期的结果:
消息是SQL_Error
,我只有一个条目ex.Errors
...
有什么办法可以避免cmd.ExecuteNonQuery
??