如何在java中运行mysql insert而不重复

时间:2012-05-02 03:26:25

标签: java mysql insert

我有一个方法可以将记录插入到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`)
)

我需要的是,当我插入新记录时,如果是重复退出该方法而不尝试插入并通知用户它是重复记录。在插入之前是否可以不编写另一种方法来搜索记录?

2 个答案:

答案 0 :(得分:0)

我会在你的表中添加一个UNIQUE约束。例如,如果org_name必须是唯一的:

ALTER TABLE organizations ADD UNIQUE (org_name);

然后观察当您尝试通过Java插入重复记录时返回的内容。添加代码以检查此情况,如果发生,则向用户显示消息。

Here是ALTER TABLE的参考文档。

答案 1 :(得分:0)

多数民众赞成在,Alter表一定会有所帮助。

在你的情况下,比方说,org_id和org_name都在那里,我会在两者中添加唯一,以免后来出现任何混淆。