ExecuteReader(cmd)) {
                int index = 0;
                
while (reader.Read()) {
                    
if (index >= region.Start) {
                        item 
= new T();
                        item.LoadData(reader);
                        items.Add(item);
                        
if (items.Count == region.Size)
                        {
                            
break;
                        }
                    }
                    index
++;
                }
            }

 

以上代码看上去似乎没什么问题,事实存在的问题是比较严重的。按道理break后紧接就是reader的关闭和释放,但在SqlDataReader确是把所有记录都read以后才会关闭和释放。正确的做法应该在break前调用Command.Cancel()方法取消继续执行。

相关文章:

  • 2021-09-19
  • 2021-07-15
  • 2021-07-17
  • 2022-12-23
  • 2021-10-12
  • 2022-12-23
  • 2022-01-25
  • 2022-12-23
猜你喜欢
  • 2021-12-11
  • 2021-07-21
  • 2021-09-24
  • 2021-07-19
  • 2022-12-23
  • 2021-12-01
相关资源
相似解决方案