0

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

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

4

2 回答 2

0

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

ALTER TABLE organizations ADD UNIQUE (org_name);

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

是 ALTER TABLE 的参考文档。

于 2012-05-02T03:37:32.610 回答
0

没错,Alter table 肯定会有所帮助。

在您的情况下,假设 org_id 和 org_name 都存在,我会在两者中添加唯一性,以免以后出现任何混淆。

于 2012-05-02T06:02:59.753 回答