使用最少代码重载方法

时间:2013-12-18 00:28:17

标签: c# database-connection overloading using-statement

我正在尝试从DB中获取带有可选重载的数据来传递连接。我可以用两种方式做到这一点。

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

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

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;
}

第一个案例似乎令人印象深刻。但是,我为每笔交易获得了大量的方法。在第二种情况下,需要在每种方法中编写大量代码,因为在这种情况下无法使用“使用”块。

更新或删除等其他事务的情况仍然更糟,因为我需要另外一个重载来传递事务。

有更好的方法吗?

1 个答案:

答案 0 :(得分:0)

第一个是最佳选择

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

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

在这里你有面向对象的实现,提供特定的边界以及删除对象(使用语句到destory对象)都是一个很好的编程。