Delphi 10 - SQL语句语法错误更新

时间:2015-10-08 12:19:23

标签: sql delphi syntax

我不知道我的代码有什么问题它在UPDATE语句中一直给出我的Synxtax错误这里是代码:

  adoQueryUsers.SQL.Clear;
      adoQueryUsers.SQL.Add('Update Users SET Password = "' +
          EdtPassword.Text + '"  where Username = "' + sUsername + '"  ');
      adoQueryUsers.Active := true;
      adoQueryUsers.ExecSQL;

我确实尝试使用adoQueryUsers.SQL.Text : =,但它给了我完全相同的问题。

2 个答案:

答案 0 :(得分:2)

删除您的' adoQueryUsers.Active:= true;'。这是一个更新声明,不会返回记录集。只需要你的ExecSQL。

另外,我会使用参数而不是将密码和用户直接解析到查询中,或者您将接触到SQL注入

答案 1 :(得分:2)

您的代码中存在多个问题。

让我们从不适当的电话开始

adoQueryUsers.Active := true;

您只在返回行集的SQL语句上使用TADOQuery.ActiveTADOQuery.Open。您的声明没有这样做,所以删除该声明。 TADOQuery.ExecSQL是唯一与此相关的内容。

接下来,停止尝试连接SQL,并改用参数。它不再是代码,它可以正确处理引用值,格式化日期等内容。它还可以防止SQL注入问题。

adoQueryUsers.SQL.Clear;
adoQueryUsers.SQL.Add('Update Users SET Password = :Password')
adoQueryUsers.SQL.Add('Where UserName = :UserName');
adoQueryUsers.Parameters.ParamByName('Password').Value := EdtPassword.Text;
adoQueryUsers.Parameters.ParamByName('UserName').Value := sUserName;
adoQueryUsers.ExecSQL;