关于DataReader使用的问题


 using (IDataReader reader = 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()方法取消继续执行。

posted @ 2009-05-04 20:52  awp110  阅读(150)  评论(0编辑  收藏  举报