Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции Введение в специальность.doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
4.29 Mб
Скачать

Параметры

Команды для манипулирования данными часто вызываются с параметрами, при этом некоторые элементы команды становятся известными только в период выполнения, Давайте рассмотрим приложение для учета товаров в книжном магазине. В нем следует предусмотреть функцию поиска книг по названию, которую можно реализовать посредством запроса к БД на основе подобного оператора SQL:

SELECT * FROM Books WHERE (Title LIKE [value])

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

Параметры — это значения, которыми заполняют поля подстановки, введенные в текст команды во время разработки. Каждый параметр представлен экземпляром класса OleDbParameter или SqlParameter, в зависимости от типа провайдера. Параметры хранятся в свойстве Parameters объекта Command. В период выполнения значения параметров считываются из этого свойства и подставляются в оператор SQL либо передаются хранимой процедуре.

Объекты Command поддерживают набор Parameters, в котором хранятся объекты Parameter соответствующего типа. Ниже перечислены некоторые свойства объектов

Parameter.

DbType (не отображается в окне дизайнера)

Direction

OleDb Type (только для объекта OleDb Parameters)

ParameterName

Precision

Scale

Size

SourceColumn

Source Version

SQL Type (только для SQLParameters)

Value

Свойства DbTypew OleDb Type объекта OleDb Parameters взаимосвязаны. Первое представляет тип параметра так, как тот представлен в обшей системе типов (CTS), а второе — как он представлен в БД; это необходимо, поскольку не все БД совместимы с CTS. Объект Parameter выполняет преобразование параметров из типа, используемого в приложении, в тип, используемый в БД. Поскольку эти свойства взаимосвязаны, при изменении значения одного из них значение другого автоматически изменяется и преобразуется в соответствующий поддерживаемый тип. Аналогичным образом связаны свойства DbType и SqlType объектов SqlParameter, свойство SqlType указывает тип БД SQL, представленный этим параметром. Свойство Direction объекта параметра определяет, является ли этот параметр входным или выходным. Возможные значения для этого свойства — Input, Output, InputOutput или ReturnVaSue — указывают, должен ли параметр хранить значение, возвращаемое хранимой процедурой или функцией.

На члены набора Parameters ссылаются в коде по индексу либо по имени, заданному свойством ParameterName. Ниже показаны два способа установки значения первого по счету параметра с именем myParameter.

// Эта команда устанавливает значение параметра, ссылаясь на него по индексу.

OleDbCommand1.Parameters[0].Value = "Hello World";

// Эта строка устанавливает значение параметра, ссылаясь на него по имени,

OleObCommand1.Parameters["myParameter"].Value = "Goodbye for now";

Свойства Precision, Scale и Size определяют длину и точность значения параметров. Precision и Scale применяются с числовыми и десятичными параметрами и определяют разрядность и длину дробной части значения свойства Value соответственно, a Size применяется с двоичными и строковыми параметрами и представляет максимальную длину такого поля.

Свойства Source Column и SourceVersion используются с параметрами, привязанными к полям объекта DataTable. SourceColumn указывает поле для поиска или сопоставления значений, a SourceVersion версию поля для редактирования.

Свойство Value содержит значение параметра.

Если свойство CommandType объекта Command установлено в Text, необходимо предусмотреть поля подстановки для всех параметров оператора SQL.

С объектом SqlCommand применяют именованные параметры. Чтобы создать поле подстановки для именованного параметра, необходимо указать имя параметра (так. как оно задано свойством ParameterName), предварив его символом @. Например, в следующем операторе SQL объявлено поле для подстановки именованного параметра Title:

SELECT Empld. Title, FirstName, LastName

FROM Employees

WHERE (Title = @Title)