MySQL:检查是否要使用JAVA插入一个已经存在的值

MySQL:检查是否要使用JAVA插入一个已经存在的值,java,mysql,Java,Mysql,我有一个表,其中有一列我想插入数据,但不是现有数据 举个例子,我有一个day专栏和一个customer。同一个客户不能有两次相同的日期,所以我有一个客户叫卡尔,他在星期一。如果我想把卡尔加入到周一,而他已经在周一存在了,它不应该这样做。我该怎么做?假设我使用JTextFields键入名称和日期 到目前为止,我得到了这个插入数据的工作(虽然没有检查它是否已经存在!) 如何检查我在name textField和day textField中键入的内容是否都存在于同一行中 提前感谢试试这个 Prepar

我有一个表,其中有一列我想插入数据,但不是现有数据

举个例子,我有一个day专栏和一个customer。同一个客户不能有两次相同的日期,所以我有一个客户叫卡尔,他在星期一。如果我想把卡尔加入到周一,而他已经在周一存在了,它不应该这样做。我该怎么做?假设我使用JTextFields键入名称和日期

到目前为止,我得到了这个插入数据的工作(虽然没有检查它是否已经存在!)

如何检查我在name textField和day textField中键入的内容是否都存在于同一行中

提前感谢

试试这个

PreparedStatement s = connection.prepareStatement("SELECT * FROM customer WHERE name=? AND date=?");
s.setString(1, name.getText());
s.setString(2, day.getText());
ResultSet result = s.executeQuery ();
if(result.next()) {
    // dupilcate records present. don't add
} else {
    // add records to table.
    s.executeUpdate("INSERT INTO customer values ('"+name.getText()+"', '"+day.getText()+"')");
}

从数据库的角度来看,@Kocko已经建议您可以创建一个唯一的约束。 现在,如果您想在键入文本框时检查,那么可以从表中缓存数据,然后在键入或完成键入时检查,但需要考虑像所有人都可以插入的点等。
您还可以使用Ajax来获得帮助,帮助无需加载整个页面即可自动转到服务器。

您可以创建一个
唯一约束
,该约束涵盖
名称
日期
列。然后,每次尝试插入重复对时,数据库都会抛出一个错误,您可以在Java层处理该错误。您的意思是我应该为这两个列指定“unique”选项,还是您所说的唯一约束是其他约束?非常感谢您的快速回答:)根据select查询的结果执行select查询和insert查询。类似于if(rs.getString(1)=Karl&&rs.getString(2)=monday)错误else insert?您在哪种情况下接受可调整的答案,后控制还是前控制?它不起作用,直接转到else循环,但当我尝试使用第一列时,它只对该列起作用。但问题将是ofc。我不能把同一个客户放在不同的日子。我不知道我是否错过了什么你知道吗,我对此一无所知。我发现了我的错误,几乎可以肯定是我犯了错误:P非常感谢!我会将此标记为我的解决方案,因为它解决了我的问题。这是注射易受攻击的。感谢您的回答,我也可以尝试此方法(也许:)
PreparedStatement s = connection.prepareStatement("SELECT * FROM customer WHERE name=? AND date=?");
s.setString(1, name.getText());
s.setString(2, day.getText());
ResultSet result = s.executeQuery ();
if(result.next()) {
    // dupilcate records present. don't add
} else {
    // add records to table.
    s.executeUpdate("INSERT INTO customer values ('"+name.getText()+"', '"+day.getText()+"')");
}