Добро пожаловать, Гость
Логин: Пароль: Запомнить меня
  • Страница:
  • 1

ТЕМА:

C# - Должен ли я закрыть () SQLConnection до его удаления? 4 года 7 мес. назад #299

  • Олег Коровяков
  • Олег Коровяков аватар Автор темы
  • Не в сети
  • Автор сайта
  • Автор сайта
  • Сообщений: 280
  • Репутация: 1
  • Спасибо получено: 1
В другом вопросе здесь об одноразовых объектах , следует ли мы называть Close() до конца используемого блока?
using (SqlConnection connection = new SqlConnection())
using (SqlCommand command = new SqlCommand())
{
    command.CommandText = "INSERT INTO YourMom (Amount) VALUES (1)";
    command.CommandType = System.Data.CommandType.Text;

    connection.Open();
    command.ExecuteNonQuery();

    // Is this call necessary?
    connection.Close();
}
Вложения:

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Последнее редактирование: от Олег Коровяков.

C# - Должен ли я закрыть () SQLConnection до его удаления? 4 года 7 мес. назад #300

  • Олег Коровяков
  • Олег Коровяков аватар Автор темы
  • Не в сети
  • Автор сайта
  • Автор сайта
  • Сообщений: 280
  • Репутация: 1
  • Спасибо получено: 1
Поскольку у вас есть используемый блок, будет вызываться метод Dispose SQLCommand и он закроет соединение:
// System.Data.SqlClient.SqlConnection.Dispose disassemble
protected override void Dispose(bool disposing)
{
    if (disposing)
    {
        this._userConnectionOptions = null;
        this._poolGroup = null;
        this.Close();
    }
    this.DisposeMe(disposing);
    base.Dispose(disposing);
}


.
this._poolGroup = null; означает, что соединение не возвращается в пул соединений? так что у меня будет n-1 соединений? – Royi Namir 09 май 2013, в 10:02

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

C# - Должен ли я закрыть () SQLConnection до его удаления? 4 года 7 мес. назад #301

  • Олег Коровяков
  • Олег Коровяков аватар Автор темы
  • Не в сети
  • Автор сайта
  • Автор сайта
  • Сообщений: 280
  • Репутация: 1
  • Спасибо получено: 1
Разборка SqlConnection с помощью .NET Reflector:
protected override void Dispose(bool disposing)
{
    if (disposing)
    {
        this._userConnectionOptions = null;
        this._poolGroup = null;
        this.Close();
    }

    this.DisposeMe(disposing);
    base.Dispose(disposing);
}

Он вызывает Close() внутри Dispose()

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

C# - Должен ли я закрыть () SQLConnection до его удаления? 4 года 7 мес. назад #302

  • Олег Коровяков
  • Олег Коровяков аватар Автор темы
  • Не в сети
  • Автор сайта
  • Автор сайта
  • Сообщений: 280
  • Репутация: 1
  • Спасибо получено: 1
Нет, вызов Dispose() в SqlConnection также вызывает Close().

MSDN - SqlConnection.Dispose()

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

  • Страница:
  • 1
Модераторы: Дмитрий

О сайте

Строительство индивидуальных домов из лёгкого самана - опыт, советы, методика строительства и подробные инструкции. А также возможность применения альтернативных источников энергии.


Контакты

08340. ул.Салютная 17. с.Гнедын.
Киевская обл. Украина.

+38 067 492 4124.
+38 095 065 8860.

info@okwood.com.ua
www.okwood.com.ua

Местоположения


8PM2+7R Гнедин, Kyiv Oblast