关于DataReader何时关闭的问题!

yanlan112 2008-11-18 12:52:14
刚开始学三层,现在弄的不知道何时该如何关闭reader了效率高,也不浪费系统资源,谢谢大家!源码如下:
DBHelper:
/// 返回一个只读数据集
/// </summary>
/// <param name="sql"></param>
/// <param name="value"></param>
/// <returns></returns>
public SqlDataReader GetReader(string sql, SqlParameter[] value)
{
SqlDataReader sdr = null;
try
{
sdr = GetCommand(sql, value).ExecuteReader(CommandBehavior.CloseConnection);
return sdr;
}
finally
{

}
Dal层:
/// <summary>
/// 返回全部留言(READER)
/// </summary>
/// <returns></returns>
public SqlDataReader getReader()
{
Dbhelper db = new Dbhelper();
return db.GetReader("select * from post", null);
}
BLL层:
/// <summary>
/// 返回留言(READER)
/// </summary>
/// <returns></returns>
public SqlDataReader getReader()
{ liuyanSQL lys = new liuyanSQL();
try
{

return lys.getReader();
}
finally
{
lys.getReader().Close();
}

}
请大家给点意见,谢谢

...全文
110 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
lovehongyun 2008-11-18
  • 打赏
  • 举报
回复
用完了就关了.
SqlDataReader dr = 一个方法返回的reader;//这种情况,把dr用完了也要及时的关闭.否则会出乱子.
CODE163 2008-11-18
  • 打赏
  • 举报
回复
使用DATATABLE DATASET
Robin 2008-11-18
  • 打赏
  • 举报
回复
使用完毕之后 就Close()
J_fenix 2008-11-18
  • 打赏
  • 举报
回复
Dal层:
/// <summary>
/// 返回全部留言(READER)
/// </summary>
/// <returns> </returns>
public SqlDataReader getReader()
{
Dbhelper db = new Dbhelper();
return db.GetReader("select * from post", null);
//这里读取数据并且返回数据集合,如list,同时关闭datareader
}
BLL层:
/// <summary>
/// 返回留言(READER)
/// </summary>
/// <returns> </returns>
public SqlDataReader getReader()
{ liuyanSQL lys = new liuyanSQL();
try
{

return lys.getReader();
}
finally
{
lys.getReader().Close();
}
编程有钱人了 2008-11-18
  • 打赏
  • 举报
回复
).ExecuteReader(CommandBehavior.CloseConnection);

操作完成 数据库也就跟着关闭了
chtsir 2008-11-18
  • 打赏
  • 举报
回复
using(sdr = GetCommand(sql, value).ExecuteReader(CommandBehavior.CloseConnection))
{
//参考下
}
yoursWTR 2008-11-18
  • 打赏
  • 举报
回复

using(SqlDataReader DataReader = DBHelper.GetReader(sql,value))
{

}


你的DBHelper 应该实现IDisposable接口,保证使用using的时候可以得到资源释放
claymore1114 2008-11-18
  • 打赏
  • 举报
回复
你使用CommandBehavior.CloseConnection,连接都关闭了,DataReader当然也关闭了。
mengxj85 2008-11-18
  • 打赏
  • 举报
回复
读完就关
孤独侠客123 2008-11-18
  • 打赏
  • 举报
回复
在获取的地方直接关了

SqlDataReader dr = GetReader(sql,value);

dr.Close();

你可以用DataSet或者是DataTable.
如果有实体,可以有强类型 List<Model>,IList<model>,ArrayList

62,269

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧