Разработка баз данных в Delphi. 11 Уроков



         

 TQuery и Параметры - часть 2


1.     Закрыть TQuery

2.     Подготовить объект TQuery, вызвав метод Prepare

3.     Присвоить необходимые значения свойству Params

4.     Открыть TQuery

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

Вот фрагмент кода, показывающий как это может быть выполнено практически:

Query1.Close;

Query1.Prepare;

Query1.Params[0].AsString := ‘Argentina’;

Query1.Open;

Этот код может показаться немного таинственным. Чтобы понять его, требуется внимательный построчный анализ. Проще всего начать с третьей строки, так как свойство Params является “сердцем” этого процесса.

          Params - это индексированное свойство, которое имеет синтаксис как у свойства Fields для TDataSet. Например, можно получить доступ к первой переменной в SQL запросе, адресуя нулевой элемент в массиве Params:

Params[0].AsString := ‘”Argentina”’;

Если параметризованный SQL запрос выглядит так:

select * from Country where Name = :NameStr

то конечный результат (т.е. то, что выполнится на самом деле) - это следующее предложение SQL:

select * from Country where Name = “Argentina”

Все, что произошло, это переменной :NameStr было присвоено  значение "Аргентина" через свойство Params. Таким образом, Вы закончили построение простого утверждения SQL.

          Если в запросе содержится более одного параметра, то доступаться к ним можно изменяя индекс  у свойства Params

Params[1].AsString :=  ‘SomeValue’;

либо используя доступ по имени параметра

ParamByName(‘NameStr’).AsString:=’”Argentina”’;

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

          Прежде, чем использовать переменную Params, сначала можно вызвать Prepare. Этот вызов заставляет Delphi разобрать ваш SQL запрос и подготовить свойство Params так, чтобы оно "было готово принять” соответствующее количество переменных. Можно присвоить значение переменной Params без предварительного вызова Prepare, но это будет работать несколько медленнее.




Содержание  Назад  Вперед