我有:
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异常: 信息:国家:42000 信息:消息:您的SQL语法有错误;查看与您的MySQL服务器版本相对应的手册,以便在'?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)'附近使用正确的语法第1行 信息:错误:1064
可能出错?
答案 0 :(得分:9)
当您不需要时,您将表示无效SQL语句的字符串传递给executeUpdate()
方法。试着做prep.executeUpdate();
。
答案 1 :(得分:2)
在最后一行中,您不需要传递变量查询。
所以改变
prep.executeUpdate(query);
有关:
prep.executeUpdate();
答案 2 :(得分:1)
主要错误在于:
// incorrect
prep.executeUpdate(query);
// correct
prep.executeUpdate();
但请尝试将SQL放在以下格式中:
UPDATE table_name(field1, field2, field3) VALUES(?, ? ,?)
如果表格有更新,这将阻止您的代码中断。