Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Создание команды




Команды

Эффективное использование соединений

В общем случае при использовании в.NET таких скудных ресурсов, как соединения с базой данных, окна или графические объекты, хорошим тоном является закрытие ресурса после работы с ним. Хотя проектировщики.NET реализовали автоматическую сборку мусора, которая рано или поздно произойдет, необходимо освобождать ресурсы как можно раньше, чтобы избежать дефицита ресурсов.

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

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

Вариант обеспечения очистки ресурсов состоит в применении блоков try... catch... finally, и он гарантирует закрытие любых открытых соединений внутри блока finally. Рассмотрим краткий пример:

using (SqlConnection cn = new SqlConnection()) { cn.ConnectionString = connect.ConnectionString; try { //Открыть подключение cn.Open(); } catch (SqlException ex) { // Протоколировать исключение Console.WriteLine(ex.Message); } finally { // Гарантировать освобождение подключения cn.Close(); } }

Теперь, когда мы разобрались с ролью объекта подключения, можно рассмотреть, как отправлять SQL-запросы в базу данных. Тип SqlCommand (порожденный от DbCommand) представляет собой объектно-ориентированное представление SQL-запроса, имени таблицы или хранимой процедуры. Тип команды указывается свойством CommandType, которое принимает значения из перечисления CommandType:

Возможные значения перечисления CommandType

Значение Пример SQL-запроса
Text (по умолчанию) string select = "SELECT ContactName FROM Customers"; SqlCommand cmd = new SqlCommand(select, cn);
StoredProcedure SqlCommand cmd = new SqlCommand("CustOrderHist", conn); cmd.CommandType = CommandType.StoredProcedure; cmd.Parameters.AddWithValue("@CustomerID", "QUICK");
TableDirect OleDbCommand cmd = new OleDbCommand("Categories", conn); cmd.CommandType = CommandType.TableDirect;

При создании объекта команды можно сразу задать SQL-запрос, передав его с помощью параметра конструктора или непосредственно свойства CommandText. Кроме того, при создании объекта команды необходимо указать подключение, которое будет в нем применяться. Это тоже можно сделать либо через параметр конструктора, либо с помощью свойства Connection, как в следующем фрагменте кода:

using (SqlConnection cn = new SqlConnection()) { cn.ConnectionString = connect.ConnectionString; try { //Открыть подключение cn.Open(); // Создание объекта команды с помощью конструктора string strSQL = "Select * From Inventory"; SqlCommand myCommand = new SqlCommand(strSQL, cn); // Создание еще одного объекта команды с помощью свойств SqlCommand testCommand = new SqlCommand(); testCommand.Connection = cn; testCommand.CommandText = strSQL; } catch (SqlException ex) { // Протоколировать исключение Console.WriteLine(ex.Message); } finally { // Гарантировать освобождение подключения cn.Close(); } }

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




Поделиться с друзьями:


Дата добавления: 2015-05-09; Просмотров: 367; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.01 сек.