Как закрыть соединение Microsoft.Practices.EnterpriseLibrary.Data.ExecuteNonQuery

Я использую библиотеку microsoft.practices.enterpriselibrary для доступа к базе данных SQL Server. Мне интересно, как закрыть соединение, когда я использую метод ExecuteNonQuery?

то есть:

using Microsoft.Practices.EnterpriseLibrary.Data.Sql; SqlDatabase db = null; try { db = new SqlDatabase(stringConnection); db.ExecuteNonQuery("storedprocedure", someParams); } catch (Exception ex) { } 

Я не могу сделать что-то вроде

 finally { if (db != null) { ((IDisposable)db).Dispose(); } } 

Итак … как я могу избежать утечек соединений?

Спасибо.

Вы можете поместить код внутри блока «using». Это обеспечит закрытие соединения после завершения.

 using Microsoft.Practices.EnterpriseLibrary.Data.Sql; SqlDatabase db = new SqlDatabase(stringConnection); using (DbConnection con = db.CreateConnection()) { db.ExecuteNonQuery("storedprocedure", someParams); } 

или вы можете использовать con.Close ().

Как правило, вам не нужно беспокоиться о закрытии соединения, поскольку блок доступа к данным более эффективно управляет соединениями. установите флажок «Управление соединениями» в следующей ссылке: http://msdn.microsoft.com/en-us/library/ff953187(v=pandp.50).aspx

 Database db = DatabaseFactory.CreateDatabase(); DbCommand cmd = db.GetStoredProcCommand("GetProductsByCategory"); db.AddInParameter(cmd, "@requestId", DbType.Int32, requestId); db.ExecuteNonQuery(cmd); 

Библиотека Enterprise обрабатывает для вас закрытие соединений, за исключением случаев использования считывателей данных. При использовании IDataReader вы должны либо использовать закрытие, либо использовать для вызова утилиты (аналогично вызову close)

 Database db = DatabaseFactory.CreateDatabase(); DbCommand cmd = db.GetSqlStringCommand("Select Name, Address From Customers"); using (IDataReader reader = db.ExecuteReader(cmd)) { // Process results } 

Утилита в этом случае закроет соединение. У них есть отличный раздел по обработке подключений в документации.

https://msdn.microsoft.com/en-us/library/ff648933.aspx

Interesting Posts

Как узнать статистику чтения / записи таблицы SQL Server?

Ошибка Linq SQL с отношением «один ко многим» и упорядочением по сложному выражению

Приложения переднего плана для изучения / копания с помощью модели интеллектуального анализа SQL Analysis Services

Проблема с подключением сервера sql-сервера

Как получить последнее время вставки / обновления / удаления datetime на Sql Server 2005?

Есть ли функция SQL Server для удаления скобок и их содержимого?

Эффективный способ получить максимальную дату до указанной даты

Результат SqlCommand – объект нельзя отбрасывать из dbnull в другие типы

транспонировать строки в столбцы в sql

EF 4.1 не соблюдает столбцы SQL Server

SQL Transaction uncommittable при использовании try..catch .. Почему?

Импорт CSV-файла в SQL Server с использованием SSIS с несколькими двойными кавычками в данных

SQL SELECT INTO с соединением, Ошибка «В базе данных уже есть объект с именем« ***** »».

Найти дату разрыва между столбцами последовательного начала и окончания

SQL: проанализировать первое, среднее и фамильное имя из поля fullname

Давайте будем гением компьютера.