在处理命令并且直接在命令上定义连接时,连接是否关闭?

我知道很多例子都存在,其中定义了SqlConnection,然后在Using块中定义了SqlCommand:

using (var conn = new SqlConnection(connString)) { using (var cmd = new SqlCommand()) { cmd.Connection = conn; //open the connection } } 

我的问题:如果我直接在SqlCommand上定义连接,那么在处理命令时连接是否会关闭?

 using (var cmd = new SqlCommand()) { cmd.Connection = new SqlConnection(connString); //open the connection } 

不,SqlCommand从不尝试关闭/处置连接。

不,在您明确处置连接对象之前,不会处置它。 但我的建议是尽可能使用

它不会关闭连接,您需要自己关闭它或将其放入自己的使用状态。

这里还有一个提示,让你的using块更具可读性:

 using (var conn = new SqlConnection(connString)) using (var cmd = new SqlCommand()) { cmd.Connection = conn; } 

@milot

但我的建议是尽可能使用块。

在使用非IDisposable对象时使用Using Blocks很好但没用,所以如果你在任何地方使用Using Blocks,这可能会让人感到困惑。

请注意,如果它们没有实现IDisposable,那么您的对象可能不会被Disposed。

希望这可以帮助。