我有一个程序,会每分钟更新一次。每次更新时,它要么添加时间、日期、需求,要么根据相同的时间和日期更新需求。但是,我当前的代码不允许我这样做。我已经尝试添加另一个代码来纠正这个问题,但它不起作用。有没有人知道如何添加约束,以便当它遇到相同的日期和时间,但不同的需求时,它会用新的需求更新数据库。而不是添加包含相同时间和日期但不同需求的新行。
我的原始代码:
preparedStatement = connect
.prepareStatement("insert into testdb.emcsg values (?, ?, ? , ?, ?)");
preparedStatement.setInt(1, count+1);
preparedStatement.setString(2, d1);
preparedStatement.setString(3, d2);
preparedStatement.setString(4, d3);
preparedStatement.setString(5, d4);
preparedStatement.executeUpdate();我编辑过的代码:
preparedStatement = connect
.prepareStatement("insert INTO testdb.emcsg values (?, ?, ? , ?, ?) ON DUPLICATE KEY UPDATE 5");
preparedStatement.setInt(1, count+1);
preparedStatement.setString(2, d1);
preparedStatement.setString(3, d2);
preparedStatement.setString(4, d3);
preparedStatement.setString(5, d4);
preparedStatement.executeUpdate();这段经过编辑的代码出现了一个错误“您的SQL语法中有一个错误;”建议和帮助我们将不胜感激!
发布于 2012-02-01 20:33:56
insert into testdb.emcsg (a, b, c, d, e) values (?, ?, ? , ?, ?)
ON DUPLICATE KEY UPDATE e = ?请注意,最好在insert语句中列出列名,而不是依赖于它们的定义顺序,并且让维护者知道这个顺序。
发布于 2012-02-01 20:34:43
从documentation可以看出,您可能需要引用要更新的列名。例如(a、b、c、d、e应替换为实际的列名):
preparedStatement = connect
.prepareStatement("insert INTO testdb.emcsg(a,b,c,d,e) values (?, ?, ? , ?, ?) ON DUPLICATE KEY UPDATE e=VALUES(e)");
preparedStatement.setInt(1, count+1);
preparedStatement.setString(2, d1);
preparedStatement.setString(3, d2);
preparedStatement.setString(4, d3);
preparedStatement.setString(5, d4);
preparedStatement.executeUpdate();https://stackoverflow.com/questions/9095806
复制相似问题