今天早上处理一个紧急的客户反应问题,这是去年开发的一套绩效考核系统。他们现在集团在推广使用,用户数多起来之后就发现某个页面响应速度非常慢,甚至会报告错误,无法完成操作。

经过检查,发现有一个方法用到了DataReader对象,但当时可能是疏忽了,忘记关闭该对象。特此记录这个问题,以为警示。

    /// 
/// 循环按照编号去取某个员工的某个指标的值 ///
///
///
public static DataSet GetGroupExamineFormDataItems(List<string> taskList,string code)
{
DataSet ds = new DataSet();
DataTable tb = new DataTable();
tb.Columns.Add("EmployeeName");
tb.Columns.Add("SelectValue");
tb.Columns.Add("TaskId");
ds.Tables.Add(tb);
foreach (string item in taskList)
{
Listparam = new List();
param.Add(new SqlParameter("@Id", item));
param.Add(new SqlParameter("@Code", code));
SqlDataReader reader = SqlHelper.ExecuteReader(SqlHelper.ConnectionStringLocalTransaction, CommandType.StoredProcedure, "GetGroupExamineFormDataItems", param.ToArray());
while (reader.Read())
{
DataRow row = tb.NewRow();
row[0] = reader[0];
row[1] = reader[1];
row[2] = item;
tb.Rows.Add(row);
}
reader.Close();
}
return ds;
}

.csharpcode, .csharpcode pre { font-size: small; color: black; font-family: consolas, "Courier New", courier, monospace; background-color: #ffffff; /*white-space: pre;*/ } .csharpcode pre { margin: 0em; } .csharpcode .rem { color: #008000; } .csharpcode .kwrd { color: #0000ff; } .csharpcode .str { color: #006080; } .csharpcode .op { color: #0000c0; } .csharpcode .preproc { color: #cc6633; } .csharpcode .asp { background-color: #ffff00; } .csharpcode .html { color: #800000; } .csharpcode .attr { color: #ff0000; } .csharpcode .alt { background-color: #f4f4f4; width: 100%; margin: 0em; } .csharpcode .lnum { color: #606060; }

 

去年用的时候,因为用户数不太多,基本上没有察觉这个问题。

这个DataReader没有关闭的后果是造成它的Connection无法关闭,导致有很多连接被空闲,但是又没有销毁。这不能不说是一个低级错误。

当然,这是一个疏忽,因为无论如何我们都知道应该是要关闭的,当时写代码估计是比较赶时间而出了差错。

.NET : 一定不要忘记关闭DataReader对象相关推荐

  1. C#之读取数据:DataReader对象

    上一篇涉及到Command对象的ExecuteReader()方法返回一个DataReader对象,那么我们就来详细的介绍这个DataReade对象. 下面的例子使用的数据表依然与上篇的相同为Cust ...

  2. DataReader对象

    DataReader对象(数据读取) DataReader对象提供了一个只进只读的数据读取器,用于从查询结果中读取数据,它每次仅能读取一行数据. [常用属性]: FieldCount:获取当前行的列数 ...

  3. DataReader对象的基本使用 c#

    多行多列的数据读取 DataReader对象 功能 不同命名空间对应的DataReader对象 如何获得 命令对象.ExecuteReader() 对象的方法 Read方法 功能: 读取下一行 用法: ...

  4. 数据库开发019 DataReader对象

    DataReader对象提供单向只读数据,只能依次读取数据,DataSet中的数据可以任意读取和修改.DataReader对象有一个很重要的方法Read,它是个布尔值,作用是读取下一条数据,当布尔值为 ...

  5. 都 2021 了,你还忘记关闭 http body?

    作者 | 曹春晖 来源 | TechPaper 看了看日历,现在已经是 2021 年了,偶尔还是能看到有人在发诸如 <http body 未关闭导致线上事故>,或者 <sql.Row ...

  6. workbook对象需要关闭_XSSFWorkbook对象 进行zip打包时 用write资源流自动关闭处理办法...

    xssfworkbook对象的write方法内会将传入的资源流自动关闭 导致下载excel失败 错误代码 outputstream out = response.getoutputstream(); ...

  7. java中logger关闭log_Log4J如何关闭Logger对象的IO流资源

    之前,在做一个项目时,客户要求在接口中对各个交易每天在monitor.trans.service三个目录下生成日志文件,monitor按日期生成文件碎片,trans每天按照日期生成一个目录,在该目录下 ...

  8. datareader(Datareader对象的什么方法用于从查询结果中读取行)

    DataReader和IDataReader的区别? IDataReader是一个接口,它规定了实现这个接口的具体类要提供哪些操作. 而具体的DataReader比如SQLDataReader和Ole ...

  9. datareader对象直接转化为int_Integer、new Integer() 和 int 比较的面试题

    作者:chenxiangxiang来源:https://www.cnblogs.com/cxxjohnson/p/10504840.html 基本概念的区分: 1.Integer 是 int 的包装类 ...

最新文章

  1. 从千万级数据查询来聊一聊索引结构和数据库原理
  2. reddit android app,reddit安卓版app
  3. CentOS 5.2 下安装tripwire2.3.1.2出错解决
  4. 在FireFox IE 下Response 中文文件名乱码问题
  5. python中变量类型在程序中可以改变_python的可变与不可变数据类型
  6. html段落加边框,Word2010怎样为段落加上边框
  7. Java好文统计( 引用 )
  8. linux指令快速复制粘贴[龟速更新中]
  9. jQuery获取及设置单选框,多选框,文本框内容
  10. 微软的正则表达式教程(一):正则表达式简介
  11. android textview 必填,在android中如何使用Html渲染的方式实现必填项前面的*号
  12. Thinking in ++i and i++
  13. 解决springmvc报No converter found for return value of type: class java.util.ArrayList问题
  14. mysql-8.0.11安装步骤
  15. 使用 shell 在多服务器上批量操作
  16. vasp和ms_采用MS建模的基本步骤以及vasp新手入门需要注意的十个简单问题
  17. 产品经理与数据的恩怨情仇
  18. mariadb安装几个问题
  19. 分享十一个学习css的小游戏,快来下载吧!
  20. 谈谈写程序与学英语 --宋劲杉

热门文章

  1. 孙鑫《VC++深入详解》完整版PDF 下载
  2. 弘辽科技:淘宝客单价高好还是低好?如何提高客单价?
  3. 4.8 IFFT/FFT
  4. VMware配置虚拟机映射,实现局域网络互相访问
  5. vue-echarts数据统计图表展示
  6. PHP涉及的所有英文单词
  7. 【黄啊码】php结合redis实现商城在线秒杀抢购
  8. 【无标题】问题记录—— (掌阅)
  9. lisp读点坐标绘多义线_多段线点导出和导入点坐标成多段线(AutoLISP源码)——好用的AutoCAD点坐标导入导出工具...
  10. IDA动态调试夜神模拟器