КАТЕГОРИИ: Архитектура-(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) |
Использование метода ExecuteNonQuery
Параметризированные запросы Выше были рассмотрены основные методы объекта Command в консольных приложениях. Это дало возможность понять синтаксис самих методов, без привязки к какому-либо интерфейсу. Однако, после того как синтаксис стал ясен, возникает вопрос - как же использовать эти методы в реальных приложениях? Очевидно, что простое копирование кода в конструктор формы, по сути, не изменит пример. Следовательно, необходимо привязывать вводимые значения к элементам пользовательского интерфейса, например, к текстовым полям. Но это означает, что параметры строки запроса будут неизвестны до тех пор, пока пользователь не введет соответствующие значения. Например, для метода ExecuteNonQuery строка commandText имела следующий вид: myCommand.CommandText = Если создадим приложение, где пользователь будет вводить фамилию и код туриста, то мы не можем заранее указать, какие это будут значения. Логически запрос можно представить примерно так: myCommand.CommandText = " UPDATE Туристы SET Для решения таких задач, которые возникли еще в самом начале разработки языка SQL, были придуманы параметризированные запросы. В них неизвестные значения заменяются параметрами следующим образом: myCommand.CommandText = Здесь @Family - параметр для неизвестного значения фамилии, @TouristID - параметр для неизвестного значения кода туриста. Отметим, что параметры пишутся без кавычек. Теперь можно выполнить привязку параметров к тексту, вводимому пользователем.
Для демонстрации привязки параметров создадим новое Windows- приложение и разместим на нем компоненты пользовательского интерфейса. Форма в режиме дизайна будет иметь следующий вид (рис. 87). Рис. 87. Разработанное приложение, вид формы в режиме дизайна Подключаем пространство имен для работы с базой данных: using System.Data.SqlClient; В классе формы создаем экземпляр conn: SqlConnection conn = null; Обработчик кнопки btnUpdate будет иметь следующий вид: private void btnUpdate_Click(object sender, System.EventArgs e) { Обратим внимание на то, что в блоке finally происходит закрытие соединения, это нужно сделать в любом случае, независимо от результата выполнения команды. Значения, введенные пользователем в текстовые поля txtFamilyUpdate и txtTouristIDUpdate, помещаются в переменные Family и TouristID. В запросе к базе данных используются два параметра - @Family и @TouristID. Они добавляются в коллекцию объекта Command с помощью метода Add свойства Parameters, а затем значения параметров устанавливаются равными переменным Family и TouristID. Метод Add перегружен. Использованный в данном фрагменте кода первый вариант этого метода принимает наибольшее количество свойств. Описание некоторых свойств метода Add приводится в таблице 16.
Конструкция метода Add, свойства Parameters объекта Command для поставщика данных OLE DB имеет в точности такую же структуру. Таблица 16. Свойства метода Add
Добавим обработчик кнопки btnInsert. private void btnInsert_Click(object sender, System.EventArgs e) { В запросе используются четыре параметра: @TouristID, @Family, @FirstName, @MiddleName. Тип данных создаваемых параметров соответствует типу данных полей таблицы «Туристы» в базе. Добавим обработчик кнопки btnDelete. private void btnDelete_Click(object sender, System.EventArgs e) {
Запускаем приложение. В каждой из групп заполняем поля, затем нажимаем на кнопки. Проверять результат можно, запуская Management Studio и просматривая каждый раз содержимое таблицы «Туристы» (рис. 88 - 90). Рис. 88. Пример обновления Рис. 89. Пример удаления Рис. 90. Пример добавления
Дата добавления: 2015-05-09; Просмотров: 458; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |