当我通过ParamByname('ParamName').Clear在Delphi中使用StoredProc组件时,我可以发送空值。
但是,在使用查询组件时,如何传递空值?
with Query do
begin
SQL.ADD('exec d_upd_calc'+Quoted(EditCalc.Text));
end在上面的场景中,如果编辑框为空,我想发送NULL。
我使用的是Delphi 2010,Unidac和Sybase。
发布于 2011-11-23 01:13:45
即使在查询中,您也可以使用参数:
Query.SQL.Text := 'exec d_upd_calc :myparam';
Query.Prepare;
Query.ParamByName('myparam').Clear;使用参数比构建完整的字符串更好,因为您不能处理引号,也不能通过SQL注入来避免安全泄漏。
发布于 2011-11-23 01:09:26
使用Advantage DB,我将按照以下思路做一些事情:
var
sqlText: string;
with Query do
begin
if EditCalc.Text = '' then
sqlText := 'exec d_upd_calc NULL' else
sqlText := 'exec d_upd_calc '+Quoted(EditCalc.Text);
SQL.ADD(sqlText);
end;如果关键字也是NULL,那么这应该是可行的。
Quoted是否删除/转义任何危险的用户输入以防止SQL注入?如果是,那么它就是好的。如果不是,那么它应该是。
https://stackoverflow.com/questions/8230676
复制相似问题