我有一个程序每分钟更新一次。每次更新时,要么添加时间、日期、需求,要么根据相同的时间和日期更新需求。但是,我当前的代码不允许我这样做。我尝试添加另一个代码来纠正这个问题,但它不起作用。有谁知道如何添加约束,以便当遇到相同的数据和时间但不同的需求时,它只会用新的需求更新数据库。而不是添加一个新行,其中包含相同的时间和日期但不同的需求。
我的原始代码:
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 语法有错误;”建议和帮助将不胜感激!
最佳答案
The documentation表明您必须在子句末尾进行赋值:
insert into testdb.emcsg (a, b, c, d, e) values (?, ?, ? , ?, ?)
ON DUPLICATE KEY UPDATE e = ?
请注意,最好在插入语句中列出列名,而不是依赖它们定义的顺序,以及维护者知道该顺序。
关于java - 通过java更新mysql数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9095806/