【问题标题】:Zeolibs: Unknown column in Where clauseZeolibs:Where 子句中的未知列
【发布时间】:2015-01-16 15:22:05
【问题描述】:

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

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

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

我的 SQL 语句有什么问题?

【问题讨论】:

  • 分配后的 ZQuery1.SQL.Text 值是多少?
  • @jarlh 'SELECT * FROM new_table WHERE TagName = GB1'#$D#$A
  • 那是你在查询中有单引号的问题??
  • 你失去了围绕你的价值的报价。现在它会查找具有该奇数值的列。

标签: sql database delphi where-clause zeos


【解决方案1】:

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

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

更好的选择是使用parametrized queries(这将阻止SQL 注入尝试- 快速查看this 问题)。

ZQuery1.SQL.Text := 'SELECT * FROM new_table WHERE TagName = :myparam';
ZQuery1.ParamByName('myparam').AsString := theSig.f.TagName;

【讨论】:

  • 你说得对,我显然需要在 TagName 值周围加上双引号。我玩弄声明并让它发挥作用。 SELECT * FROM new_table WHERE TagName = " '+theSig.f.TagName+' " ';
  • 最好使用参数化查询而不是大量的配额。
猜你喜欢
  • 2011-06-03
  • 2013-06-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-03
  • 2021-09-19
  • 2020-06-28
相关资源
最近更新 更多