处理或使用关键字"使用"

时间:2015-03-11 03:08:12

标签: c# odbc

我是否真的需要使用comm.Dispose()conn.Dispose()或直接使用using

using (OdbcConnection conn = new OdbcConnection())
{
    conn.Open();
    OdbcCommand comm = new OdbcCommand(sql, conn);
    OdbcDataReader dr = comm.ExecuteReader();

    while (dr.Read())
    {
      //codes here...
    }

    conn.Close();
    dr.Close();
    comm.Dispose();
    conn.Dispose();
}

如果是这样的话,我想这样做。

段:

using (OdbcConnection conn = new OdbcConnection())
{
    conn.Open();
    using(OdbcCommand comm = new OdbcCommand(sql, conn))
    {
        using(OdbcDataReader dr = comm.ExecuteReader())
        {
            while (dr.Read())
            {
                //codes here...
            }
        }
        dr.Close();

    }
    conn.Close();
}

这会更合适吗?

2 个答案:

答案 0 :(得分:1)

是的,您可以使用using - 它会为您调用Dispose

您也可以省略Close,因为Dispose会为您调用。{/ p>

using (OdbcConnection conn = new OdbcConnection())
{
    conn.Open();
    using(OdbcCommand comm = new OdbcCommand(sql, conn))        
    using(OdbcDataReader dr = comm.ExecuteReader())
    {
        while (dr.Read())
        {
            //codes here...
        }
    }            
}

答案 1 :(得分:1)

第二个示例是合适的(dr在调用Close时不在范围内 - Dispose经常为这些类型的事件调用Close

using(IDisposable foo = ...)
{
    //Do stuff using foo
}

相当于

IDisposable foo = ...;

try
{
    //Do stuff using foo
}
finally
{
    foo.Dispose();
}