最近我發現了有趣的行爲。SELECT後,ExecuteScalar會立即返回嗎?
具有當MS SQL使用SqlCommand.ExecuteScalar存儲過程跑(),我的應用程序似乎是完全不知道以完成其出現SELECT之後的任何SQL錯誤或打印。
最可能的解釋是,在出現任何SELECT結果後立即向C#提供流控制,而不等待存儲過程完成(儘管存儲過程繼續在下面靜默執行)。不幸的是,C#應用程序並不知道任何可能在該點之後發生的SQL異常,因爲它的性能提高了(不需要等待,因爲結果已經知道)。
任何人都可以證實我的解釋嗎?這種行爲可以改變嗎?
這可能會回答你的問題:http://stackoverflow.com/questions/7024109/how-can-i-get-an-error-message-that-happens-when- using-executenonquery,這可能也是有幫助的:http://support.microsoft.com/kb/321903/en-us – 2013-03-07 14:28:27
如果您不讀取結果直到流結束,則會發生DataReaders。不知道是否適用於'ExecuteScalar'。 – 2013-03-07 15:31:04