【问题标题】:SQL : Update Statement : Syntax ErrorSQL:更新语句:语法错误
【发布时间】:2013-09-05 12:26:53
【问题描述】:

Votes 列的默认值为 0。每次单击按钮时,它都必须将我想要的任何值添加到我想要的特定行。

我的错误是:

语法错误:更新语句。 [[德尔福]]

这是我的代码:

procedure TForm4.BitBtn1Click(Sender: TObject);    
var     
  spinval : integer;
begin
  spinval := SpinEdit1.value;``

  // Candidatetable.Insert;
  // Candidatetable['Votes'] := Candidatetable['Votes'] + spinval;

  ADOQuery1.Active := false;
  ADOQuery1.SQL.Text := 'Update Candidate_table set votes = ''' +
                        Candidatetable['Votes'] + IntToStr(spinval) +
                        ''' where Name = ''' + DBLookupComboBox1.Text + '''';

  ADOQuery1.ExecSQL;
  ADOQuery1.Active := false;
  ADOQuery1.SQL.Text := 'Select * from Candidate_table';
  ADOQuery1.Active := true;

  MessageDlgPos('Thank you for voting. You will be logged out.' , mtInformation, [mbOK], 0, 1000, 500);

  Form4.Hide;
  Form2.Show;
end;

请帮助 =)

谢谢。

【问题讨论】:

  • 使用named parameters 代替未经处理的字符串连接。
  • 也许去掉`spinval := SpinEdit1.value;`之后的刻度线;`
  • 您在任务的哪一部分遇到了问题?查看您的 SQL 并找到错误。您还没有在此处显示 SQL。您已经展示了用于构造 SQL 的公式,但没有展示结果,而结果显然是 Delphi 不喜欢的部分。
  • Jaco,请停止你现在正在做的事情,然后用谷歌搜索“SQL 注入”这个词。
  • @Jaco:我已经回滚(撤消了)你上次的编辑。在您收到答案后,这里不允许更改整个问题。这样做会使答案不再与问题匹配,从而导致投票失败。回答您的第一个问题只是让您完全改变它的人也浪费了很多时间。如果您有新问题,请发布新问题。您可能想再次阅读How to Ask,这是您在此处创建帐户时同意理解的。

标签: sql delphi


【解决方案1】:

我想这就是你要找的。​​p>

  ADOQuery1.SQL.Clear;
  ADOQuery1.SQL.Add('Update Candidate_table');
  ADOQuery1.SQL.Add('set votes = votes + :Votes');
  ADOQuery1.SQL.Add('where Name = :Name');

  ADOQuery1.Parameters[0].Value := spinval;
  ADOQuery1.Parameters[1].Value := DBLookupComboBox1.Text;

【讨论】:

  • 小记号,我会使用 ParamByName,而不是魔法索引值。
  • @whosrdaddy,魔法更快,非魔法更安全 :-) 是的,在这种情况下,这绝对没关系,但对于重复的参数分配,我要么存储 TParameter 参考或使用索引。
  • 当 sql 接近参数设置行时,我倾向于使用索引值。如果 Sql 在其他地方,我会使用 ParamByName,除非我正在寻找非常高效的东西。
  • @Jaco 如果对您有帮助,请不要忘记接受这个答案。
  • Uhg...抱歉它没有工作它没有计算投票,因为我喜欢它只是将投票的值替换为 spinedit 的值
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-10-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多