Информационный сайт

 

Реклама
bulletinsite.net -> Книги на сайте -> Программисту -> Троелсен Э. -> "С# и платформа .NET. Библиотека программиста" -> 273

С# и платформа .NET. Библиотека программиста - Троелсен Э.

Троелсен Э. С# и платформа .NET. Библиотека программиста — СПб.: Питер, 2004. — 796 c.
ISBN 5-318-00750-3
Скачать (прямая ссылка): cplatforma2004.pdf
Предыдущая << 1 .. 267 268 269 270 271 272 < 273 > 274 275 276 277 278 279 .. 320 >> Следующая

Давайте добавим в нашу базу данных Cars простую хранимую процедуру GetPetName, которая будет принимать единственный параметр типа і tit (если мы создавали базу данных при помощи скрипта, то эта хранимая процедура должна быть уже создана). В качестве входящего параметра, конечно же, нами будет использован идентификатор автомобиля, а возвращаться будет прозвище автомобиля — значения столбца PetName (типа char). Синтаксис для создания хранимой процедуры может быть таким:
CREATE PROCEDURE GetPetName @carID int.
GpetNare :har(2G: output
.AS
SELECT GpetName = PetName from Inventory where CarID = (acarlD
Теперь, когда хранимая процедура создана, нам необходимо каким-то образом ее вызвать. Первое, что, конечно, для этого нужно, — создать объект Ql eDbConnect і on, настроить строку подключения и открыть соединение с базой данных. После этого
нам потребуется создать объект QleDbCommand, указав имя хранимой процедуры и установив нужное значение свойства СсгагпапгЛуре;
// Открываем соединение с источником данных OleDbConnection сп - new OleDbConnectionС); cn.ConnectionString -
"Provi der=SQLOLEDB.1:" + "Integrated security=SSPI:" + "Persist Security Info-False;" + "lnitial Catalog=Cars:" + "Data Source-BIGMANU:";
cn.Opent);
Il А теперь создаем и настраиваем объект Ol eUbCoimiand для хранииой процедуры: OleDoCommand туСомпапд = new CTeDbtawnand("GetPetName". сп); myCommand.CommandTyре - CommandType.StoredProcedure;
Для свойства CommandType используются значения из одноименного перечисления. Значения этого перечисления приведены в табл. 13.16.
Таблица 13.16. Значения перечисления CommandType Значение Описание
StoredProcedure Используется при настройке объекта OleDbCammand, который обеспечивает запуск на сервере баз данных хранимой процедуры
Для OleDbComiTiand достаточно будет указать имя таблицы — в результате будут возвращены все данные из этой таблицы
Text Объект OleDbCommand будет представлять стандартную команду на языке
SQL. Это значение используется по умолчанию
При выполнении обычных команд SQL о свойстве CommandType задумываться не надо, поскольку значение по умолчанию (Text) в этом случае вполне подходит,
Управляемый провайдер OLE DB 675
Однако если команда представляет собой хранимую процедуру, то необходимо будет указать для свойства Ol eDbCommand. CommandType значение StoredProcedure.
Определяем параметры при помощи типа OleDbParameter
Обычно при запуске на выполнение хранимой процедуры нам необходимо определить передаваемые ей параметры. Дг я этой цели используется класс 01 eDbParaiieter — объектная оболочка для параметров, которые передаются хранимой процедуре или возвращаютсякакрезультатееработы. Для KiaccaOleDbParameter предусмотрено большое количество свойств, которые позволяют определить им к, размер и тип данных для параметра, а также передается ли он хранимой процедуре или принимается от нее. Наиболее важные свойства типа ClePbParacieter представлены в табл. 13.17.
Таблица 13.17. Свойства класса OleDbParameter Свойство Описание
!Datatype Определяет тип параметра в терминах .NET
DbType Позволяет получить или задать тип данных, используемый на источнике
данных. Для этого свойства используются значения из перечисления OleDbType
Direction Определяет, будет ли этот параметр передаваться на источник данных,
возвращаться с источника данных или он сможет использоваться для передачи и в том и в другом направлении
і .'¦.¦J .!•!¦ Позволяет определить, будет ли данный параметр допускать пустые значения
(значения типа NULL)
получить или установить имя параметра
Precision Позволяет получить или установить максимальное количество цифр,
используемых для значения параметра (определяемое через свойство Value)
Scale Позволяет получить или установить количество десятичных разрядов,
используемых для значения параметра
Size Позволяет получить или установить максимальный размер данных для данного
параметра
Value Позволяет получить или установить значение параметра
В нашей ситуации хранимая процедура принимает один параметр и одни параметр возвращает. Соответствующий код приведен ниже. Обратите внимание, что параметры (то есть объекты OleDbParameter) добавляются в коллекцию ParametersCol lection объекта Ol eDbCommand при помощи свойства Parameters.
// Создаем объект для наших параметров OleQbpararneter theParam = new 01eDbParameter():
Il Параметр для передачи хранимой процедуре
theParam.ParameterMame = "@carID";
theParam.DbType = 0IeDbTyре.Integer;
theParam.Di recti on = ParameterDirecton. Input;
Il CarlD = 1
theParam.Value = 1;
myCommand. Parameters.Add(theParam);
Il Параметр для возврата значений из хранимой процедуры theParam = new OleDbParameterO ;
676 Глава 13 • Доступ к данным при помощи ADO.NET
theParam.ParameterName = "@PetName": theParam.DbTyре = 0IeDbTyре.Char; theParam.Size = 20:
theParam.Di recti on = ParameterDirecti on.Output: myCommand.Parameters.Add(theParam):
Последнее, что осталось сделать — запустить программу на выполнение при помощи OleObCoirmand.ExecuteNonQueryO. Обратите внимание, что для получения возвращаемых хранимой процедурой значений (в нашем случае - прозвища машины) используется свойство Value объекта OleDbParameter:
Предыдущая << 1 .. 267 268 269 270 271 272 < 273 > 274 275 276 277 278 279 .. 320 >> Следующая
Реклама
Авторские права © 2009 AdsNet. Все права защищены.
Rambler's Top100