Java 如何将字段的重复值检查到数据库中并在其上显示验证

Java 如何将字段的重复值检查到数据库中并在其上显示验证,java,Java,您可以在SQL查询本身中执行此操作- 请参见下面的示例以了解相同的信息- String un = store.getSms(); String sql = "SELECT SMS FROM MYDB WHERE SMS_ = '" +cn+"'"; prepStmt = conn.prepareStatement(sql); rs = prepStmt.executeQuery(); int count = 0; while (rs.next()) { count = count +

您可以在SQL查询本身中执行此操作- 请参见下面的示例以了解相同的信息-

String un = store.getSms();
String sql = "SELECT SMS FROM MYDB WHERE SMS_ = '" +cn+"'";

prepStmt = conn.prepareStatement(sql);
rs = prepStmt.executeQuery();
int count = 0;
while (rs.next()) {
    count = count + 1;
}

if (count > 1) {
    infoIsValid = false;
    errorMessage = errorMessage.concat("Duplicate keyword Found. Please create new sms" + "\n");
} else {
    insert query
}
对要查找重复值的列使用“组”


注意:ANSI标准是将所有非聚合列都包含在GROUP BY中。

似乎您对数据库提出了错误的问题。您需要与该条件匹配的行数,因此应改为请求该行数

请注意,下面的内容未经测试,因为我不知道
cn
的确切类型,所以我假设它是某种
字符串

SELECT
    name, email, COUNT(*)
FROM
    users
GROUP BY
    name, email
HAVING 
    COUNT(*) > 1

您的代码似乎没有问题,那么结果有什么问题?您可以构造类似于以下内容的查询..选择my_列,COUNT()作为my_表组中的COUNT,my_列的COUNT()值大于1您的查询仍然容易受到SQL注入的攻击,考虑到您在准备语句之前仍在构建串联查询,问题不是如何使用SQL。这是如何通过Java使用SQL实现的。这绝对有效,但它没有回答正确的问题。
String sql = "SELECT COUNT(*) FROM MYDB WHERE SMS_ = ?";
prepStmt = conn.prepareStatement(sql);
prepStmt.setString(1, cn);
rs = prepStmt.executeQuery();
while(rs.hasNext()) {
    int count = rs.getInt();
    // validation logic here
}