首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

小弟我写了个方法!返回SqlDataReader 但方法中不知怎样关闭数据连接流!多谢

2012-01-19 
我写了个方法!返回SqlDataReader 但方法中不知怎样关闭数据连接流!谢谢publicSqlDataReadergetBestQuickNe

我写了个方法!返回SqlDataReader 但方法中不知怎样关闭数据连接流!谢谢
public   SqlDataReader   getBestQuickNews()
{    
con=DB.Connection();
con.Open();
SqlCommand   cmd=new   SqlCommand( "select   top   6   *   from   hos_News ",con);
SqlDataReader   sdr=cmd.ExecuteReader();
return   sdr;
                                                        //sdr.Close();--------是这样写吗?
//con.Close();-------如果关闭程序报数据库连接以关闭的错误,不关太占用资源
}

我是菜鸟,请高人指教!

[解决办法]
public SqlDataReader getBestQuickNews()
{
con=DB.Connection();
con.Open();
using(SqlCommand cmd=new SqlCommand( "select top 6 * from hos_News ",con))
{
using(SqlDataReader sdr=cmd.ExecuteReader())
{
return sdr;
}
}
}

去看看using的用法
[解决办法]
SqlDataReader sdr=cmd.ExecuteReader(CommandBehavior.CloseConnection);

这样也可以
当你关闭sdr时,会自动关闭con
[解决办法]
这是个顾头不顾腚的程序。既然返回DataReader,还怎么关闭数据库联接?一个完整的程序结构应该这样:

public List <QuickNewType> getBestQuickNews()
{
using(DBConnection con=DB.Connection())
{
con.Open();
SqlCommand cmd=new SqlCommand( "select top 6 * from hos_News ",con);
SqlDataReader sdr=cmd.ExecuteReader();
List <QuickNewType> result=new List <QuickNewType> ();
while(sddr.Read())
{
QickNewType one=new QuickNewType();
//读取sdr,将字段值写入one的相应属性
result.Add(one);
}
return result;
}
};

热点排行