0

我正在尝试使用 Zeolibs 执行 SQL 查询,但编译器一直抱怨以下错误 - Where 子句中的未知列。

ZQuery1.SQL.Text := 'SELECT * FROM new_table WHERE TagName = '+theSig.f.TagName;
ZQuery1.ExecSQL;

但是我检查了我的数据库表中的所有列,它是正确的,因为我在这里有TagName

我的 SQL 语句有什么问题?

4

1 回答 1

3

您需要使用QuotedStr函数。所以你的代码将是

ZQuery1.SQL.Text := 'SELECT * FROM new_table WHERE TagName = '+QuotedStr(theSig.f.TagName);

更好的选择是使用参数化查询(这将阻止 SQL 注入尝试 - 快速查看这个问题)。

ZQuery1.SQL.Text := 'SELECT * FROM new_table WHERE TagName = :myparam';
ZQuery1.ParamByName('myparam').AsString := theSig.f.TagName;
于 2015-01-16T15:33:40.300 回答