我是否需要在内部使用SqlConnection.Open()
:
using (SqlConnection var = new SqlConnection())
{
//my operations
}
如果我不通过SqlConnection.Close()
函数处理此连接会怎样?
答案 0 :(得分:9)
是的,您需要在Open
阻止内using
建立连接。
如果您没有明确Close()
该连接,using
块的结尾将为您执行此操作,因为使用处理连接。当处理连接时,它会自动关闭。
答案 1 :(得分:2)
using
语句只是语法糖,可确保在Dispose
实例上调用IDisposable
,无论如何,因此在您的情况下using (SqlConnection connection = new SqlConnection())
大致相当于({1}}根据MSDN):
SqlConnection connection = new SqlConnection();
try
{
// Operations.
}
finally
{
if (connection != null)
{
connection.Dispose();
}
}
如果SqlConnection
Dispose
和Close
调用实际上是等效的,那么在Close
块内调用using (SqlConnection)
将是多余的。< / p>
另一方面,在许多情况下(例如,在致电Open
,ExecuteReader
,ExecuteScalar
之前),仍然需要拨打ExecuteNonQuery
。 using
语句对是否需要显式打开连接没有影响 - 仅取决于是否需要显式关闭它。
答案 2 :(得分:0)
提供方便的语法,确保正确使用 IDisposable对象
using
在内部实施IDisposable
using(SqlConnection con=new SqlConnection("myCOnstr"))
{
con.open();
using(SqlCommand con=new SqlCommand("myCmd",con))
{
//......Insert/Update /Delete
}
}