2012-06-20 4 views
4

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

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

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

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

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

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

Im использование Firebird базы данных, и Im использование Delphi XE2

ответ

8

Чтобы установить свойство параметра вы должны использовать Params свойство. Отсюда вы можете получить доступ к каждому параметру, используя индекс или имя, чтобы установить значение параметра, используя один из propertiesAsString, 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;