日期:2014-05-20  浏览次数:20417 次

我写了个方法!返回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;
}
};