SQL Update:WHERE子句错误

时间:2014-10-01 20:11:26

标签: java sql sql-update sqlanywhere

我不知道这个查询有什么问题:

SQL = "UPDATE "+ choosenClass +" SET COUNT = "+count+" WHERE NAME = "+names;
stmt2.executeUpdate( SQL );

错误:

java.sql.SQLSyntaxErrorException: Column 'RAMAYAH' is either not in any table in the FROM list or appears within a join specification and is outside the scope of the join specification or appears in a HAVING clause and is not in the GROUP BY list. If this is a CREATE or ALTER TABLE  statement then 'RAMAYAH' is not a column in the target table.

它表示列RAMAYAH不在那里,但字符串“RAMAYAH”本身取自同一个表。请帮助。

2 个答案:

答案 0 :(得分:0)

尝试将字符串括在单引号中:

SQL = "UPDATE "+ choosenClass +" SET COUNT = "+count+" WHERE NAME = '"+names+"'";
stmt2.executeUpdate( SQL );

答案 1 :(得分:0)

除了其他人在评论中提及的SQL-Injection漏洞外;您的查询几乎没有错误/问题。

您需要在WHERE条件WHERE NAME = "+names中引用过滤器值 WHERE NAME = '"+names+"'"。否则,您的查询将形成如下所示,查询引擎将假定您的表中存在名为RAMAYAH的列。

UPDATE tab1 SET COUNT = 10 WHERE NAME = RAMAYAH;

此外,在UPDATE语句中,您有一个列名COUNT,这是一个保留字。你需要逃脱它以保持安全。

  

如果您使用,请使用backtique

     

使用[]方括号

     

使用""双引号