zoukankan      html  css  js  c++  java
  • 关于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()方法取消继续执行。

  • 相关阅读:
    Deploy Django in Windows
    Django开发环境配置
    springmvc源码解读
    分布式事务中常见的三种解决方案
    分布式锁总结
    JAVA代码优化
    Mysql(mysql总结)
    树(数据结构二)
    集合(Java总结一)
    centos7.7下docker与k8s安装(DevOps三)
  • 原文地址:https://www.cnblogs.com/aaa6818162/p/1449044.html
Copyright © 2011-2022 走看看