如何从 Delphi 中的 Unidac 查询组件传递 NULL 值?
当我在 Delphi 中使用 StoredProc 组件时 ParamByname('ParamName').Clear
我能够发送 NULL 值。
但是在使用查询组件时如何传递 NULL 值呢?
with Query do
begin
SQL.ADD('exec d_upd_calc'+Quoted(EditCalc.Text));
end
在上面的场景中,如果编辑框为空,我想发送 NULL。
我正在使用 Delphi 2010、Unidac 和 Sybase。
When I am using StoredProc component in Delphi usingParamByname('ParamName').Clear
I'm able to send NULL value.
But how can I pass NULL value when using a Query component?
with Query do
begin
SQL.ADD('exec d_upd_calc'+Quoted(EditCalc.Text));
end
In the above scenario I want to send NULL if the edit box is blank.
I am using Delphi 2010, Unidac with Sybase.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
即使在查询中,您也可以使用参数:
并且最好使用参数而不是构建完整的字符串,因为您不能处理引号并避免通过 SQL 注入造成安全泄漏。
Even in Queries you can work with parameters:
And it's better to use parameters than to build the complete string, because you must not handle quotes and avoid security leaks via SQL-injection.
对于 Advantage DB,我会按照以下方式做一些事情:
如果关键字也是 NULL 那么这应该可以工作。
Quoted
是否删除/转义任何危险的用户输入以防止 SQL 注入?如果是的话那就好了。如果没有那么应该。With Advantage DB I would do something along these lines:
If the keyword is also
NULL
then this should work.Does
Quoted
remove/escape any dangerous user input to prevent SQL injection? If yes then it's good. If not then it should.