c # подключение к базе данных - PullRequest
0 голосов
/ 21 ноября 2010

Мне было интересно, если это хорошая идея, чтобы поддерживать соединение с базой данных (System.Data.SqlClient.SqlConnection ()) открытым или рекомендуется закрыть соединение после использования и открыть его при необходимости снова?(Примечание: мое приложение будет работать непрерывно в течение дней / месяцев).Я как бы подталкиваю к тому, чтобы оставить это открытым.Какое решение лучше?

Ответы [ 3 ]

3 голосов
/ 21 ноября 2010

В общем, утилизируйте его, когда закончите, и не беспокойтесь об этом.

ADO.NET по умолчанию реализует пул соединений , поэтому соединение остается открытым за кулисами, чтобы избежать потери производительности при постоянном открытии новых соединений.

Еще одна причина для закрытия соединений в вашем коде - если вы потеряете соединение с сервером базы данных, когда вы не используете соединение, вы не столкнетесь с ошибкой, которая может произойти, если вы оставите соединение открытым.

1 голос
/ 21 ноября 2010

Вы обязательно должны открыть свои соединения как можно позже и закрыть их как можно скорее.

Не только вы должны закрыть их, когда вы закончите, но: вы должны закрыть их даже между тесно связаннымикоманды, если между ними вообще есть любой другой код.На самом деле, позвольте мне сказать это так: закройте ваши объекты ADO.NET Connection так быстро и часто, как вы можете.(то есть не совершайте явно глупых действий, чтобы закрывать соединения, которые явно не должны закрываться)

По умолчанию поставщик ADO.NET для SQL Server (а также большинство других известных поставщиков) предоставляютпул соединений.Это фактически будет управлять созданием и уничтожением этих соединений для вас - но только если вы закроете их, когда закончите.

Если вы оберните создание и использование ваших объектов соединения в блоки using, этолегко сделать ...

using(SqlConnection conn = new SqlConnection(...))
{
   ///Open and use the connection
} //the 'using' causes it to automatically be closed.
0 голосов
/ 21 ноября 2010

Откройте соединение, если вам нужно, не тратьте ресурсы; -)

...