Method overloading with minimal code

76 views Asked by At

I'm trying to fetch data from DB with optional overload to pass the connection. I could do it in two ways.

public DataTable GetData()
{
    using (SqlConnection con = new SqlConnection("..."))
    {
        return GetData(con);
    }
}

public DataTable GetData(SqlConnection con)
{
    // fetch data
    return dtData;
}

or

public DataTable GetData(SqlConnection con=null)
{
    bool OpenCon = false;
    if (con == null)
    {
        con = new SqlConnection("...");
        OpenCon = true;
    }
    try
    {
        // fetch data
    }
    finally
    {
        if (OpenCon)
            con.Close();
    }
    return dtData;
}

The first case seems impressive. However, I am getting tons of methods for each transaction. In the second case, lots of code need to be written in each method as there is no way to use "using" block in this case.

The situation is still worse with other transactions like update or delete, since I need to have another overload to pass the transaction.

Is there a better way?

1

There are 1 answers

0
Chandan Kumar On

1st one is the best choice

 public DataTable GetData()
 {
     using (SqlConnection con = new SqlConnection("..."))
     {
         return GetData(con);
     }
 }

 public DataTable GetData(SqlConnection con)
 {
      // fetch data
       return dtData;
 }

Here you have Object oriented implementation, providing specific boundry as well as removal of object(using statement to destory objects ) are all there which is a good programmaing.