【发布时间】:2011-01-11 19:10:44
【问题描述】:
当我运行以下 sn-p
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 个条目(对应于打印的 3 个SqlError 的 SqlError.Class 为 0(而实际错误为 18)
但是,如果我将 ExecuteNonQuery 替换为 ExecuteScalar,我会得到预期的结果:
消息是SQL_Error,而我在ex.Errors中只有一个条目...
有什么办法可以避免cmd.ExecuteNonQuery的奇怪行为??
【问题讨论】:
标签: sql tsql sqlcommand sqlexception