Java 如何将字段的重复值检查到数据库中并在其上显示验证
您可以在SQL查询本身中执行此操作- 请参见下面的示例以了解相同的信息-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 +
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
}