Do I need to use SqlConnection.Open()
inside:
using (SqlConnection var = new SqlConnection())
{
//my operations
}
如果我不通过
SqlConnection.Close()
函数来释放连接,会发生什么?Do I need to use SqlConnection.Open()
inside:
using (SqlConnection var = new SqlConnection())
{
//my operations
}
SqlConnection.Close()
函数来释放连接,会发生什么?是的,您需要在using
块内打开连接。
如果您没有明确调用Close()
关闭连接,则当using
块结束时会自动关闭连接。因为using
会释放连接,而释放连接会自动关闭连接。
using
语句只是一种语法糖,它确保IDisposable
实例上调用Dispose
方法,所以在你的情况下,using (SqlConnection connection = new SqlConnection())
与(根据MSDN)大致等同于:SqlConnection connection = new SqlConnection();
try
{
// Operations.
}
finally
{
if (connection != null)
{
connection.Dispose();
}
}
SqlConnection
的情况下,Dispose
和Close
调用实际上是等效的,因此在using (SqlConnection)
块内调用Close
将是多余的。Open
(例如在调用ExecuteReader
、ExecuteScalar
、ExecuteNonQuery
之前)。using
语句对于是否需要显式打开连接没有影响 - 只有对于是否需要显式关闭它。using
在内部实现了 IDisposable。using(SqlConnection con=new SqlConnection("myCOnstr"))
{
con.open();
using(SqlCommand con=new SqlCommand("myCmd",con))
{
//......Insert/Update /Delete
}
}