Delphi FDQuery.SQL 以 '!' 开头的字符串不工作
Delphi FDQuery.SQL string starting with '!' dont work
我有一个使用参数动态设置的查询。
我查询带有 varchar 字段的行,该字段包含可以以“!”开头的值。
但我没有那些匹配。
我使用 SQLServer 作为数据库服务器。
如果我直接在数据库管理器中使用 sqlcode 和 运行 它可以工作,但不能使用 TFDQuery。
请参阅下面的代码示例:
myParameter := '!Tommy';
with qryExec do
begin
SQL.Clear ;
SQL.Add('SELECT * FROM myTable T WHERE T.Name='+quotedStr(myParameter));
active := true ;
first;
if Not Eof then
begin
Result := True;
end;
end; //with
我不知道这里出了什么问题,所以如果有人能来解释一下,我会很高兴。
我建议使用实际参数,这也避免了 SQL 注入的可能性。还有 Open
的重载版本可以减少内务处理行数。
FDQuery1.Open('SELECT * FROM myTable T WHERE T.Name= :NAME',['!Tommy'],[ftWideString]);
我有一个使用参数动态设置的查询。 我查询带有 varchar 字段的行,该字段包含可以以“!”开头的值。 但我没有那些匹配。 我使用 SQLServer 作为数据库服务器。 如果我直接在数据库管理器中使用 sqlcode 和 运行 它可以工作,但不能使用 TFDQuery。 请参阅下面的代码示例:
myParameter := '!Tommy';
with qryExec do
begin
SQL.Clear ;
SQL.Add('SELECT * FROM myTable T WHERE T.Name='+quotedStr(myParameter));
active := true ;
first;
if Not Eof then
begin
Result := True;
end;
end; //with
我不知道这里出了什么问题,所以如果有人能来解释一下,我会很高兴。
我建议使用实际参数,这也避免了 SQL 注入的可能性。还有 Open
的重载版本可以减少内务处理行数。
FDQuery1.Open('SELECT * FROM myTable T WHERE T.Name= :NAME',['!Tommy'],[ftWideString]);