gpt4 book ai didi

sql - 如何在Delphi中设置包含 '@'的sql查询参数

转载 作者:行者123 更新时间:2023-12-03 15:46:35 24 4
gpt4 key购买 nike

我正在使用电子邮件地址查询数据库。地址类似于 fred.o'neill@smxi.com

在 Delphi 中,看起来像 fred.o''neill@smxi.com因为撇号当然被转义了。

假设查询是...

'select * from table where (email = ''%s'')'

现在,如果我只是替换 %s,查询就会失败,因为它似乎将该值视为 2 个字符串“fred.o”和“neill@smxi.com”,即它无法识别转义。

如果查询是...

'select * from table where email = :email' 

...则参数设置为电子邮件地址。如果没有撇号,则有效,但如果电子邮件地址包含撇号,则与数据不匹配。

[已编辑以删除不正确的数据]

有什么建议吗?

最佳答案

使用参数时,请勿添加引号或自行转义任何内容。

这应该有效:

var
email: String;
begin
email := 'fred.o''neill@smxi.com';
MyQuery.SQL.Text := 'SELECT * FROM table WHERE email = :email';
// Ensure that ParamCheck is enabled
MyQuery.ParamCheck := True;
// Explicitly set the type to string to ensure it's escaped
// E.g. binary types are not escaped
MyQuery.Params.ParamByName('email').DataType := ftString;
MyQuery.Params.ParamByName('email').Value := email;
MyQuery.Active := True;
end;

如果没有返回任何内容,请检查数据库中存储的实际值。插入时可能没有正确转义。

关于sql - 如何在Delphi中设置包含 '@'的sql查询参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19385138/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com