繁体   English   中英

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

[英]SQL 1064 Syntax Error using a JDBC prepared statement

我有:

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:SQL异常:INFO:状态:42000 INFO:消息:您的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(?, ? ,?)

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM