SQL UPDATE语句(语法)错误

时间:2014-09-26 11:01:13

标签: sql

嗨,我正忙着上学的项目,想知道一些我无法上班的事情。

我有一个名为Users的表和一个名为Animals的表,它们与一个关系链接。在Animal表中有一个名为UserID的列,它链接到用户的名称。我想做的是让使用者能够采用尚未被采用的动物。在他们可以采用的页面上是与动物表相关联的dbedits,它们显示一只动物的所有信息,当你使用dbnavigator时,你会转到下一个动物等.DBedits显示指定动物的列值。一个dbedit显示动物是否被采用,当你点击它旁边的采用按钮时,它会说动物是否被采用,如果动物被采用,你可以采用它。当它没有被采用时,用户可以将他的名字放在一个InputBox中,这个名字我想放在动物表中,它说的是userID,因为如果你再查看用户表,那么用户旁边会有一个“+”图标。当您单击采用动物的用户的“+”图标时,它应显示相关动物的信息。在采用按钮后面,我使用输入框获取用户名,并将其放在一个名为username的变量中,并将动物的名称与dbedit中的一个一起放入名为nameofanimal的变量中。然后我想将动物表中的userID更改为动物名称= nameofanimal的用户名,但它不起作用。我正在使用ADOQRY,这是我正在使用的SQL UPDATE代码,

qryDBV.sql.Text := 'UPDATE Animals SET Adopted = Yes AND UserID = '''+username+''' WHERE (('''+nameofanimal+'''[Adopted] = false)';
     qryDBV.ExecSQL;
     qryDBV.Active := false;
     qryDBV.sql.Text := 'SELECT * FROM Animals';
     qryDBV.Active := true;
    end;  

2 个答案:

答案 0 :(得分:0)

用这个改变你的第一行.. 并且仅在where子句中使用... 所以代码将是这样的..

qryDBV.sql.Text := 'UPDATE Animals SET Adopted = Yes , UserID = '''+username+''' WHERE (('''+nameofanimal+'''[Adopted] = false)';

答案 1 :(得分:0)

  1. 始终在字符串上加上引号。
  2. 请勿在SET子句中使用AND,但如果需要,请在WHERE子句中使用
  3. 在需要时撤消报价
  4. qryDBV.sql.Text := 'UPDATE Animals SET Adopted = 'Yes', UserID = \''+username+'\' WHERE (\''+nameofanimal+'\'[Adopted] = false)';