我是否真的需要使用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();
}
这会更合适吗?
答案 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();
}