我想使用 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
要设置参数的属性,您必须使用Params http://docwiki.embarcadero.com/Libraries/en/Data.SqlExpr.TCustomSQLDataSet.Params财产。从这里您可以使用索引或名称访问每个参数,要设置参数的值,请使用以下之一特性 http://docwiki.embarcadero.com/Libraries/en/Data.DB.TParam_Properties AsString http://docwiki.embarcadero.com/Libraries/XE2/en/Data.DB.TParam.AsString, 作为整数 http://docwiki.embarcadero.com/Libraries/XE2/en/Data.DB.TParam.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;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)