在Java中的SQL准备语句中出现问题

时间:2019-02-22 17:01:42

标签: java sql

当尝试使用带预备语句的where子句在表(事件)中设置值时,我的sql语法错误 这是代码`

public void setEventParticipants(int id, String eventParticipants)
    {

            try {
            String req1="insert into events (eventParticipants) values(?) where (eventId)=?";
            PreparedStatement pre = c.prepareStatement(req1);
            pre.setString(1, eventParticipants);
            pre.setInt(2, id);
            pre.executeUpdate();

        } catch (SQLException ex) {
            Logger.getLogger(EventService.class.getName()).log(Level.SEVERE, null, ex);
        }
    }`

我收到此错误: 您的SQL语法有误;检查与您的MySQL服务器版本对应的手册以获取正确的语法,以在第1行的'where(eventId)= 7'附近使用 谢谢您的帮助

3 个答案:

答案 0 :(得分:1)

更改此

insert into events (eventParticipants) values(?) where (eventId)=?

为此

UPDATE events SET eventParticipants = ? WHERE eventId = ?

如果您执行插入语句,它应该填充您的表

答案 1 :(得分:1)

代替INSERT INTO table_name VALUES(值1,值2,值3,...); 尝试 更新表名 SET列1 =值1,列2 =值2,... 条件在哪里; 要么 插入表名称 值(&value1,&value2,&value3,...);

答案 2 :(得分:0)

您的SQL错误。请阅读MySQL文档here中有关INSERT语句和here中有关UPDATE以及应如何使用它们的示例。 INSERT不能用于更新现有行。

我怀疑正确的说法是

update events set eventParticipants = ? where eventId = ?

但这取决于您要实现的目标。