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