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();-------如果关闭程序报数据库连接以关闭的错误,不关太占用资源
}我是菜鸟,请高人指教!

解决方案 »

  1.   

    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的用法
      

  2.   

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

  3.   

    查看MSDN上的using
    有详细解释
      

  4.   

    SqlDataReader sdr=cmd.ExecuteReader(CommandBehavior.CloseConnection);这样也可以
    当你关闭sdr时,会自动关闭con
      

  5.   

    这是个顾头不顾腚的程序。既然返回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;
      }
    };