我有一个方法可以将记录插入到mysql数据库中,如下所示
public boolean addOrganization(OrganizationDTO organizationDTO) {
Connection con = null;
try {
String insertOrganizationSQL = "INSERT INTO organizations (org_id, org_name) VALUES(?, ?)";
con = JDBCConnectionPool.getInstance().checkOut();
PreparedStatement insertOrgPS = (PreparedStatement) con.prepareStatement(insertOrganizationSQL);
insertOrgPS.setString(1, organizationDTO.getOrg_id());
insertOrgPS.execute();
return true;
} catch (Exception e) {
JDBCConnectionPool.getInstance().checkIn(con);
logger.error(e.getLocalizedMessage());
e.printStackTrace();
return false;
} finally {
JDBCConnectionPool.getInstance().checkIn(con);
}
}
数据库表,
CREATE TABLE `organizations` (
`org_id` varchar(5) NOT NULL,
`org_name` varchar(100) DEFAULT NULL,
`sys_dat_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`user` varchar(100) NOT NULL,
PRIMARY KEY (`org_id`)
)
我需要的是,当我插入新记录时,如果是重复退出该方法而不尝试插入并通知用户它是重复记录。在插入之前是否可以不编写另一种方法来搜索记录?
答案 0 :(得分:0)
我会在你的表中添加一个UNIQUE约束。例如,如果org_name必须是唯一的:
ALTER TABLE organizations ADD UNIQUE (org_name);
然后观察当您尝试通过Java插入重复记录时返回的内容。添加代码以检查此情况,如果发生,则向用户显示消息。
Here是ALTER TABLE的参考文档。
答案 1 :(得分:0)
多数民众赞成在,Alter表一定会有所帮助。
在你的情况下,比方说,org_id和org_name都在那里,我会在两者中添加唯一,以免后来出现任何混淆。