Справочное руководство по Delphi



              

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


  • Открыть 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, но это будет работать несколько медленнее.

    После того, как Вы вызывали Prepare, и после того, как присвоили необходимые значения переменной Params, Вы должны вызвать Open, чтобы закончить привязку переменных и получить желаемый DataSet. В нашем случае, DataSet должен включать записи где в поле “Name” стоит “Argentina”.




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