我正在尝试使用 Zeolibs 执行 SQL 查询,但编译器一直抱怨以下错误 - Where 子句中的未知列。
ZQuery1.SQL.Text := 'SELECT * FROM new_table WHERE TagName = '+theSig.f.TagName;
ZQuery1.ExecSQL;
但是我检查了我的数据库表中的所有列,它是正确的,因为我在这里有TagName
我的 SQL 语句有什么问题?
我正在尝试使用 Zeolibs 执行 SQL 查询,但编译器一直抱怨以下错误 - Where 子句中的未知列。
ZQuery1.SQL.Text := 'SELECT * FROM new_table WHERE TagName = '+theSig.f.TagName;
ZQuery1.ExecSQL;
但是我检查了我的数据库表中的所有列,它是正确的,因为我在这里有TagName
我的 SQL 语句有什么问题?
您需要使用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;