我有这个代码:
// this is managed elsewhere
SqlConnection connection =...
connection.Open();
// this is one block of code, separate from the above
using( var transaction = connection.BeginTransaction() ) {
using( var command = connection.CreateCommand() ) {
command.Transaction = transaction;
command.CommandText = ...
using( var reader = command.ExecuteReader() ) {
if( reader.HasRows ) {
if( reader.Read() ) {
//get data from the reader
}
}
}
}
这段代码在大多数情况下运行得很好。然而有时——非常罕见——检索HasRows
产生以下异常:
Invalid attempt to call HasRows when reader is closed.
System.InvalidOperationException
at System.Data.SqlClient.SqlDataReader.get_HasRows()
// my code calling HasRows listed here
我 99.5% 确定连接在那一刻是打开的。我的代码使用HasRows
在阅读读者之前与 MSDN 的建议非常相似 http://msdn.microsoft.com/en-us/library/haa3afyz%28v=vs.80%29.aspx.
该异常的原因可能是什么?
这恰好是中的意外行为ExecuteReader() https://stackoverflow.com/q/14229310/57428- 很可能是一个错误。在深处ExecuteReader()
发生一些随机错误,很可能是网络超时,连接关闭,然后关闭SqlDataReader
就好像什么也没发生一样返回。难怪随后的电话HasRows
产生异常。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)