首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Delphi中从Unidac查询组件中传递空值?

如何在Delphi中从Unidac查询组件中传递空值?
EN

Stack Overflow用户
提问于 2011-11-23 01:00:52
回答 2查看 1.6K关注 0票数 1

当我通过ParamByname('ParamName').Clear在Delphi中使用StoredProc组件时,我可以发送空值。

但是,在使用查询组件时,如何传递空值?

代码语言:javascript
复制
with Query do
begin
 SQL.ADD('exec d_upd_calc'+Quoted(EditCalc.Text));
end

在上面的场景中,如果编辑框为空,我想发送NULL。

我使用的是Delphi 2010,Unidac和Sybase。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-11-23 01:13:45

即使在查询中,您也可以使用参数:

代码语言:javascript
复制
Query.SQL.Text := 'exec d_upd_calc :myparam';
Query.Prepare;
Query.ParamByName('myparam').Clear;

使用参数比构建完整的字符串更好,因为您不能处理引号,也不能通过SQL注入来避免安全泄漏。

票数 2
EN

Stack Overflow用户

发布于 2011-11-23 01:09:26

使用Advantage DB,我将按照以下思路做一些事情:

代码语言:javascript
复制
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注入?如果是,那么它就是好的。如果不是,那么它应该是。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8230676

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档