我正在创建一个 java swing 程序,用户可以在其中创建记录,但我希望能够在允许用户创建记录之前检查重复项。这是我的代码:
public boolean createAssignRequest(AssignmentRequests assignReq) {
int id = assignReq.getReqId();
String dutyName = assignReq.getDutyName();
String volNric = assignReq.getVolNric();
boolean success = false;
DBController db = new DBController();
String dbQuery = "";
db.getConnection();
dbQuery = "INSERT into assignrequests (dutyName, volNric)"
+ " VALUES ('" + dutyName + "','" + volNric + "')";
if (db.updateRequest(dbQuery) == 1) {
success = true;
}
db.terminate();
return success;
}
如果已存在具有相同 DutyName 和 volNric 的行,则用户无法创建记录。 如果我要执行这行sql语句
ALTER TABLE `assignrequests` ADD UNIQUE `uniqueindex`(`dutyName`, `volNric`);
我会在 mySQL 中实现它(即使我截断我的数据,也只实现一次)还是在我的程序代码中实现它? (我使用的是 eclipse ) 我也使用三层架构:-) 最后,如果已经检测到重复记录,我将如何实现代码以显示 JOptionPane?感谢您的帮助!
最佳答案
如果您希望 DutyName
和 volNric
具有唯一值,请使用唯一约束/索引来实现:
create index idx_assignrequests_dutyname_volnric on assignrequests(dutyname, volnric);
然后,当您执行插入
时,您可以让它失败。或者,您可以使用重复 key 更新
忽略它:
INSERT into assignrequests(reqId, dutyName, volNric)"
VALUES ('" + id + "','" + dutyName + "','" + volNric + "')
ON DUPLICATE KEY UPDATE dutyName = VALUES(dutyName);
正在更新的列被设置为其自身 - 因此该操作不会执行任何操作。
关于java - 插入前检查重复数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25245310/