SQL 1064语法使用JDBC预准备语句时出错

我有:

String query = "INSERT INTO Basestations VALUES(?, ?, ?, ?, ?, ?, ?," + "?, ?, ?, ?, ?, ?, ?, ?)"; PreparedStatement prep = conn.prepareStatement(query); prep.setInt(1, profile.getNetworkId()); prep.setInt(2, profile.getBaseStationId()); prep.setInt(8, profile.getLoadLevel()); prep.setInt(11, profile.getPositionX()); prep.setInt(12, profile.getPositionY()); prep.setInt(13, profile.getPort()); prep.setDouble(3, profile.getSignalStrength()); prep.setDouble(4, profile.getFrequency()); prep.setDouble(6, profile.getMaxBitrate()); prep.setDouble(7, profile.getGuaranteedBitrate()); prep.setDouble(10, profile.getRange()); prep.setString(5, profile.getNetworkType()); prep.setString(9, profile.getProvider()); prep.setString(14, profile.getCharging()); prep.setBoolean(15, true); prep.executeUpdate(query); 

我得到了:

INFO:SQLexception:INFO:状态:42000信息:消息:您的SQL语法中有错误; 查看与您的MySQL服务器版本相对应的手册,以便在’?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)’附近使用正确的语法第1行INFO:错误:1064

什么可能是错的?

当您不需要时,您将表示无效SQL语句的字符串传递给executeUpdate()方法。 试着做prep.executeUpdate();

在最后一行中,您不需要传递变量查询。

所以改变

  prep.executeUpdate(query); 

对于:

  prep.executeUpdate(); 

主要错误在这里:

  // incorrect prep.executeUpdate(query); // correct prep.executeUpdate(); 

但请尝试将SQL放在以下格式中:

 UPDATE table_name(field1, field2, field3) VALUES(?, ? ,?) 

如果表的更新,这将防止您的代码中断。