Logo Море(!) аналитической информации!
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware
Скидка до 20% на услуги дата-центра. Аренда серверной стойки. Colocation от 1U!

Миграция в облако #SotelCloud. Виртуальный сервер в облаке. Выбрать конфигурацию на сайте!

Виртуальная АТС для вашего бизнеса. Приветственные бонусы для новых клиентов!

Виртуальные VPS серверы в РФ и ЕС

Dedicated серверы в РФ и ЕС

По промокоду CITFORUM скидка 30% на заказ VPS\VDS

VPS/VDS серверы. 30 локаций на выбор

Серверы VPS/VDS с большим диском

Хорошие условия для реселлеров

4VPS.SU - VPS в 17-ти странах

2Gbit/s безлимит

Современное железо!

2007 г.

Основы ADO .NET
Лекция из курса «Введение в программирование на C# 2.0»

Марченко Антон Леонардович
Интернет-Университет Информационных Технологий, INTUIT.ru

Назад Оглавление Вперёд

Сведения о хранимых процедурах

Хранимые процедуры – предварительно оттранслированное множество предложений SQL и дополнительных предложений для управления потоком, сохраняемое под именем и обрабатываемое (выполняемое) как одно целое. Хранимые процедуры сохраняются непосредственно в базе данных; их выполнение обеспечивается вызовом со стороны приложения; допускает включение объявляемых пользователем переменных, условий и других программируемых возможностей.

В хранимых процедурах могут применяться входные и выходные параметры; сохраняемые процедуры могут возвращать единичные значения и результирующие множества.

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

  • в одной процедуре можно сгруппировать несколько запросов;
  • в одной процедуре можно сослаться на другие сохраненные процедуры, что упрощает процедуры обращения к БД;
  • выполняются быстрее, чем индивидуальные предложения SQL.

Таким образом, хранимые процедуры облегчают работу с базой данных.

Способы создания команд

Известно три способа создания команд для манипулирования данными:

  • объявление и создание объекта команды непосредственно в программном коде с последующей настройкой этого объекта вручную. Следующие фрагменты кода демонстрируют этот способ:
     string cs = @"Provider=Microsoft.Jet.OLEDB.4.0;" +
                  "Data Source=" + 
                  @"F:\SharpUser\CS.book\Rolls.db";
     OleDbConnection cn = new OleDbConnection(cs);
     cn.Open();
     OleDbCommand cmd = new OleDbCommand();
     cmd.Connection = cn; // Объект "Соединение" цепляется к команде!

    Либо так:

    string cs = @"Provider=Microsoft.Jet.OLEDB.4.0;" +
                  "Data Source=" + 
                  @"F:\SharpUser\CS.book\Rolls.db";
     OleDbConnection cn = new OleDbConnection(cs);
     cn.Open();
     OleDbCommand cmd = cn.CreateCommand();// Команда создается соединением!
  • использование инструментария, предоставляемого панелью ToolBox (вкладка Data). Объект соответствующего класса перетаскивается в окно дизайнера с последующей настройкой этого объекта. SqlCommand или OleDbCommand перетаскивается в окно конструктора со вкладки Data, при этом остается вручную задать свойства Connection, CommandText, CommandType (для определения типа команды, которая задается в свойстве CommandText). При этом свойство CommandType может принимать одно из трех значений: (1) Text – значение свойства CommandText воспринимается как текст команды SQL. При этом возможна последовательность допустимых операторов, разделенных точкой с запятой; (2) StoredProcedure – значение свойства CommandText воспринимается как имя существующей хранимой процедуры, которая будет исполняться при вызове данной команды; (3) TableDirect – при этом свойство CommandText воспринимается как непустой список имен таблиц, возможно, состоящий из одного элемента. При выполнении команды возвращаются все строки и столбцы этих таблиц;
  • размещение (путем перетаскивания) хранимой процедуры из окна Server Explorer в окно дизайнера. Объект "Команда" соответствующего типа при этом создается автоматически на основе любой хранимой процедуры. При этом новый объект ссылается на хранимую процедуру, что позволяет вызывать эту процедуру без дополнительной настройки.

Оба типа объектов "Команда" (SqlCommand и OleDbCommand) поддерживают три метода, которые позволяют исполнять представляемую команду:

  • ExecuteNonQuery – применяется для выполнения команд SQL и хранимых процедур, таких как INCERT, UPDATE, DELETE. С помощью этого метода также выполняются команды DDL – CREATE, ALTER. Не возвращает никаких значений.
  • ExecuteScalar – обеспечивает выбор строк из таблицы БД. Возвращает значение первого поля первой строки, независимо от общего количества выбранных строк.
  • ExecuteReader – обеспечивает выбор строк из таблицы БД. Возвращает неизменяемый объект DataReader, который допускает последовательный однонаправленный просмотр извлеченных данных без использования объекта DataAdapter.

Кроме того, класс SqlCommand поддерживает еще один метод:

  • ExecuteXmlReader – обеспечивает выбор строк из таблицы БД в формате XML. Возвращает неизменяемый объект XMLReader, который допускает последовательный однонаправленный просмотр извлеченных данных.

Назначение всех четырех методов – ИСПОЛНЕНИЕ НА ИСТОЧНИКЕ ДАННЫХ команды, представленной объектом команды.

Parameter

Данные из базы выбираются в результате выполнения объекта Command. В ADO .NET применяются параметризованные команды. Объект Parameter является средством модификации команд. Представляет свойства и методы, позволяющие определять типы данных и значения параметров.

Настройка команд

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

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

В структуре команды предусмотрены так называемые ПОЛЯ ПОДСТАНОВКИ. Объект команды при выполнении приложения настраивается путем присвоения значения параметра полю подстановки. Эти самые поля подстановки реализованы в виде свойства Parameters объекта команды. В зависимости от типа провайдера каждый параметр представляется объектом одного из классов: OleDbParameter или SqlParameter.

Необходимое количество параметров для выполнения той или иной команды зависит от конкретных обстоятельств: каждый параметр команды представляется собственным объектом-параметром. Кроме того, если команда представляется сохраняемой процедурой, то может потребоваться дополнительный объект-параметр.

Во время выполнения приложения объект команды предварительно настраивается путем присваивания свойству Parameters списка (вполне возможно, состоящего из одного элемента) соответствующих значений параметров – объектов класса Parameters. При выполнении команды эти значения параметров считываются и либо непосредственно подставляются в шаблон оператора языка SQL, либо передаются в качестве параметров хранимой процедуре.

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

Кроме того, работа с конкретной СУБД также накладывает свою специфику на правила формирования объекта команды.

Назад Оглавление Вперёд

Бесплатный конструктор сайтов и Landing Page

Хостинг с DDoS защитой от 2.5$ + Бесплатный SSL и Домен

SSD VPS в Нидерландах под различные задачи от 2.6$

✅ Дешевый VPS-хостинг на AMD EPYC: 1vCore, 3GB DDR4, 15GB NVMe всего за €3,50!

🔥 Anti-DDoS защита 12 Тбит/с!

VPS в России, Европе и США

Бесплатная поддержка и администрирование

Оплата российскими и международными картами

🔥 VPS до 5.7 ГГц под любые задачи с AntiDDoS в 7 локациях

💸 Гифткод CITFORUM (250р на баланс) и попробуйте уже сейчас!

🛒 Скидка 15% на первый платеж (в течение 24ч)

Новости мира IT:

Архив новостей

IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

Информация для рекламодателей PR-акции, размещение рекламы — adv@citforum.ru,
тел. +7 495 7861149
Пресс-релизы — pr@citforum.ru
Обратная связь
Информация для авторов
Rambler's Top100 TopList This Web server launched on February 24, 1997
Copyright © 1997-2000 CIT, © 2001-2019 CIT Forum
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...