title: How to improve this reusable methods class?
body: <p>I have a class containing methods to fill DropDowns, return DataSet, return Scalar or simply excute a query. In one of my <a href="https://stackoverflow.com/questions/9426086/how-to-prevent-malfunction-memory-leak-by-disposing-static-methods">older posts</a> in StackOverflow, I submitted a buggy code of the same class. Based on the advice of the contributors, I have improved the code and want to know whether this class is suitable to be used in a high-concurrent environment:</p>
  
  <pre><code>public sealed class reuse
  {
      public void FillDropDownList(string Query, DropDownList DropDownName)
      {
          using (TransactionScope transactionScope = new TransactionScope())
          {
              using (SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["MyDbConnection"].ConnectionString.ToString()))
              {
                  SqlDataReader dr;
                  try
                  {
                      if (DropDownName.Items.Count &gt; 0)
                          DropDownName.Items.Clear();
  
                      SqlCommand cmd = new SqlCommand(Query, con);
                      dr = cmd.ExecuteReader();
  
                      while (dr.Read())
                          DropDownName.Items.Add(dr[0].ToString());
  
                      dr.Close();
                  }
                  catch (Exception ex)
                  {
                      CustomErrorHandler.GetScript(HttpContext.Current.Response,ex.Message.ToString());
                  }
              }
          }
      }
  }
  </code></pre>
  
  <p>I want to know whether to dispose Command and DataReader objects as well or they too will get automatically disposed with USING?</p>