Если SqlCommand выполняется и время ожидания истекло, закрывается ли и / или удаляется соответствующий SqlConnection? - PullRequest
2 голосов
/ 03 декабря 2009

Если SqlCommand выполняется и время ожидания истекло, соответствующее SqlConnection закрыто и / или удалено?

Ответы [ 3 ]

6 голосов
/ 03 декабря 2009

Если у вас нет SqlConnection, заключенного в оператор using, вы по-прежнему отвечаете за закрытие и удаление соединения (как и любое другое исключение).

Вы также можете использовать блок try/catch/finally:

try
{
    // Create and execute your SqlCommand here
}
catch(SqlException ex)
{
    // Catch the timeout
}
finally
{
    // Close and Dispose the SqlConnection you're using
}

Но using намного чище и автоматически удаляет:

using(SqlConnection conn = new SqlConnection())
{
    // Do your work here.
    // The SqlConnection will be closed and disposed at the end of the block.
}
5 голосов
/ 03 декабря 2009

Нет, вам все равно нужно убирать за собой. Использование блока using приведет к его удалению:

using (SqlConnection connection = new SqlConnection(...))
{
    // ...  
}
0 голосов
/ 03 декабря 2009

Все это должно быть заключено в условие finally после исключения, чтобы вы закрывали соединение и очищали любой реализованный объект sql. Посмотрите на try / catch / finally и вставьте код очистки в оператор finally.

...