关于DataReader使用的问题
2009-05-04 20:52
176 查看
Code
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()方法取消继续执行。
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()方法取消继续执行。
相关文章推荐
- 【随笔★DataReader的疑惑】关于使用DataReader的一个很奇怪的问题,不应该用DataReader?
- 关于DataReader使用的问题
- 关于delphi在DLL中使用TStyleManager加载皮肤ListView的问题
- 关于使用StickyDecoration分组错乱问题
- 关于使用frameset框架怎么样使整个框架移动的问题
- 关于Fragment使用中遇到的一系列的问题
- 关于xp使用4G内存的问题
- 关于存储过程使用的问题,谁帮忙解答下呀
- 关于win10 64 位,C#无法 使用软键盘的问题解决方案
- 关于解决在使用opencv时出现*.exe 已触发了一个断点的问题
- 关于xuggle在linux上使用问题
- 关于使用UIAlertView会调用applicationDidBecomeActive的问题解决
- 关于asp.net配置无法使用的问题
- 关于使用AjaxControlToolKit进度条的一些问题和思考
- 关于控件注册和使用许可问题的解决办法
- 关于使用dataBinding时无法自动生成binding类的问题
- 使用VC6时:关于WinAPI的版本问题。
- WCF-005:关于 WCF 基础连接已经关闭 连接被意外关闭-不是使用父类指向子类问题
- 关于eclipse svn插件的 svn:ignore无法使用的问题
- 关于Qt无法直接使用cout和cin的问题