Как передать параметр в запрос с помощью dbExpress в Delphi

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

В TADOQuery работает следующее:

SELECT*
FROM sometable
WHERE sometable.id = :value;

Теперь в приведенном выше примере вы передаете параметр в запрос, используя двоеточие (:) перед именем параметра. Но когда я пытаюсь сделать это с помощью TSQLQuery, я получаю следующую ошибку:

dbExpress driver does not support the TDBXTypes.UNKNOWN data type. Vendor Error Message.

Теперь, если вы не передаете параметр в компоненте TSQLQuery, может кто-нибудь помочь мне. Это новая территория для меня.

Я использую базу данных Firebird, и я использую Delphi XE2


person Japster    schedule 20.06.2012    source источник


Ответы (1)


Чтобы установить свойства параметра, вы должны использовать свойство Params. . Отсюда вы можете получить доступ к каждому параметру, используя индекс или имя, чтобы установить значение параметра, используйте один из свойства AsString, AsInteger и т. д., в зависимости от типа поля.

Проверьте этот образец

var
  LSQLQuery : TSQLQuery;
begin
  LSQLQuery:=TSQLQuery.Create(nil);
  try
    LSQLQuery.SQLConnection:=SQLConnection1;
    LSQLQuery.CommandText:='Select FIRST_NAME from EMPLOYEE Where EMP_NO=:Param1';
    LSQLQuery.Params.ParamByName('Param1').AsInteger:=2;//or using the index of the parameter LSQLQuery.Params[0].AsInteger:=2; 
    LSQLQuery.Open;//Execute the query
    ShowMessage(LSQLQuery.FieldByName('FIRST_NAME').AsString); //get the data
    LSQLQuery.Close;
  finally
    LSQLQuery.Free;
  end;
end;
person RRUZ    schedule 20.06.2012