有一个集合:
Student [ id=3, name=3a,age=2]
Student [ id=1, name=1a,age=3]
数据库中。
mysql> select * from b;
+----+------+------+
| id | name | age |
+----+------+------+
| 2 | 2a | 2 |
| 3 | 3a | 3 |
+----+------+------+
批更新语句:
conn.setAutoCommit(false);
PreparedStatement ps = null;
ps = conn.prepareStatement("update b set id=?,name=? where age=?",ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
System.out.println("集合大小:"+ stus.size());
for (int i = 0; i < stus.size(); i++) {
ps.setInt(1, stus.get(i).getId());
ps.setString(2, stus.get(i).getName());
ps.setInt(3, stus.get(i).getAge());
ps.addBatch();
}
ps.executeBatch();
conn.commit();
在执行 ps.executeBatch(); 报错。
java.sql.BatchUpdateException: Duplicate entry '3' for key 1
JDBC 数据库 MySQL 批处理
------解决方案--------------------
id=3的,重复了。
------解决方案--------------------
id是表的pk吧
------解决方案--------------------
主键重复了。
------解决方案--------------------
id 3 和1里的重复拉
------解决方案--------------------
pk重复了!