-1
             public void addCustomer(Customer customer) throws CustomerHomeException,
ClassNotFoundException {

    try {
        Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
        String url = "jdbc:odbc:Mydb";
        String user = "user1";
        String password = "password";
        Connection con = DriverManager.getConnection(url, user, password);
        PreparedStatement smt = con
                .prepareStatement("insert into customer (ssn,customer_name) values (?,?)");
        if (this.getCustomers().equals(customer.getSocialSecurityNumber()) == false){
        smt.setString(1, customer.getSocialSecurityNumber());
        smt.setString(2, customer.getName());
        smt.executeUpdate();
        }
        smt.close();
        con.close();
    } catch (SQLException e) {
        throw new CustomerHomeException("Failed to create CustomerHome", e);
    }

我们使用的密钥是 ssnumber ;我需要遍历数据库表并使用准备好的语句进行检查

4

1 回答 1

1

您可以使用这两种方法之一。

  • 检查 SQL 状态代码(是否违反唯一约束)

    } catch(SQLException e) {
        if(e.getSQLState().equals("23505")) // for DB2
            System.err.println("Customer already exists!");
    }
    
  • 首先触发SELECT以检查客户是否存在

    ResultSet rs = con.createStatement().executeQuery(
     "SELECT * FROM customer WHERE ssn = " + customer.getSocialSecurityNumber());
    if(rs.next()) {
        System.err.println("Customer already exists!");
        return;
    }
    

SQL 状态代码 (免责声明:请检查您的数据库文档并验证 :)

 DB2        23505
 Derby      23505
 Oracle     23000
 MySQL      23000
 SQL Server 23000
于 2013-05-15T22:27:28.127 回答