【问题标题】:Cant find column but it exist找不到列,但它存在
【发布时间】:2014-01-31 18:06:48
【问题描述】:

您好,我正在使用 delphi 10 和 sybase。

我在 2 天前遇到了这个问题,我已经尝试了很多东西。 我在构建中设置 adoconnection 属性,搜索我的数据库并准备就绪。我可以插入、删除和更新,但是当我试图从 y 中选择 x 时,z 输出是 未找到列

当我做一个:

select * from administradores 

它可以工作,但我不需要的那个。 我的代码就是这个。

ADOQuery1.Close ;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Text:='SELECT usu_administrador,pass_administrador from administradores  where usu_administrador='+Edit1.Text+'';
ADOQuery1.Open;

我已经尝试过SQL syntax error,打开字段编辑器,它甚至没有字段。那张贴正是发生在我身上的事情,但该解决方案对我不起作用。

请问有人可以帮我吗?

【问题讨论】:

  • SQL.ClearSQL.Text :=... 之前不需要,因为SQL.Clear 仅在SQL.Add(...) 之前才有意义 /// 阶梯非常脆弱 - 只要用户在 Edit1 中加上引号,您的程序就是搞砸了:bobby-tables.com/delphi.html
  • 在这一刻尝试两者,它们具有相同的输出...未找到列 y!...我坚持...它存在! :S
  • 什么是 Delphi 10?德尔福2006? // 编辑问题并复制错误的 FULL 和 EXACT 文本 (1) // 确保查询完全为空 - 没有 Fields,没有 FieldDefs,没有 IndexDefs,没有 IndexFieldNames 等等。 docs.embarcadero.com/products/rad_studio/delphiAndcpp2009/… // 实际上,如果您在错误的确切文本之后将来自 DFM 的 ADOQuery1 源 (2)(谷歌“将 dfm 视为文本”)发布在这里会很好。还可以查看表 (3) 的 SQL 声明。所以,等待(1),(2),(3)
  • 嗨,我已经用下面的答案修复了它!刚刚做了这个 ADOQuery1.SQL.Text:='SELECT usu_administrador,pass_administrador from administradores where usu_administrador='+QuotedStr(Edit1.Text);感谢您的关注:)
  • 我明白了,相信我们俩 - 这是一个糟糕的伪解决方案。我们都立即告诉你——一定要使用参数

标签: sql delphi select sybase tadoquery


【解决方案1】:

您确实应该在查询中使用参数

ADOQuery1.SQL.Text:='SELECT usu_administrador, pass_administrador ' +
      ' from administradores  where usu_administrador = :paramadminname';
ADOQuery1.ParamByName('paramadminname').Value := Edit1.Text;

此外,您的查询不起作用的原因是 Edit1 中的值必须用引号括起来才能在您的 SQL 中工作

ADOQuery1.SQL.Text:='SELECT usu_administrador,pass_administrador from administradores  where usu_administrador='+QuotedStr(Edit1.Text);

【讨论】:

  • 您解决了我的问题...我只需添加 QuotedStr(Edit1.Text) 即可!非常感谢您的建议!极好的!谢谢!!!
  • 你真的应该使用参数。您让应用程序对已解决的 SQL 注入问题保持开放状态。
  • "我只需添加 QuotedStr(Edit1.Text) 就可以了!"真的很糟糕的方法信不信由你。
  • 我已经把它改成了参数。谢谢 :) 非常有用的信息!谢谢。
猜你喜欢
  • 2018-08-25
  • 1970-01-01
  • 1970-01-01
  • 2013-10-16
  • 2013-05-20
  • 2015-04-14
  • 2015-12-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多