次のスニペットを実行すると
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.Errors4 つのエントリがあります (SqlError出力に対応する 3 の aSqlError.Classは 0 です (対、実際のエラーの場合は 18))。
ただし、に置き換えるExecuteNonQueryとExecuteScalar、期待される結果が得られます。
メッセージSQL_Errorはex.Errors...
の奇妙な動作を回避する方法はありますcmd.ExecuteNonQueryか??