【发布时间】:2017-03-06 09:02:40
【问题描述】:
我想验证电话号码是否存在于数据库列中(TelephoneNumber)。如果存在,我将返回 true 或 false
此代码不仅用于验证TelephoneNumber 列,还可以验证其他数据库列,例如FirstName、LastName、EmailAddressetc
public boolean executeDBQuery(String tableName, String columnName,
String columnValue) {
try {
PreparedStatement ps = null;
String query = "SELECT TOP 1 " + columnName + "FROM" + tableName
+ "WHERE" + columnName + "=" + '?';
ps = conn.prepareStatement(query);
ps.setString(1, columnValue);
ResultSet rs = ps.executeQuery();
if (rs.next()) {
return true;
} else {
return false;
}
} catch (SQLException ex) {
}
return false;
}
主要方法:
public static void main(String[] args) {
Database db = new Database();
boolean result = db.executeDBQuery("Application","FirstName","asd");
System.out.println(result);
}
即使在数据库中找不到值,上面的代码也会返回一个真值。不知道我在这里做错了什么。谁能帮帮我
【问题讨论】:
-
首先,使用“*”不是一个好主意。第二:为什么不使用“WHERE”并让数据库进行查找。使用索引这可能更有效。
-
我看不出您将如何使用目前给出的代码验证其他列。这是否意味着,您将只为另一个 col 名称使用相同的名称?在这种情况下,所有列都必须是字符串列。数字的呢?另请注意,您可以通过选择适当的排序规则来控制数据库中的区分大小写。
-
是的,我会将整数转换为字符串,同时将它传递给参数
-
@Fildor:是的,你当然是对的。我只是想强调,不使用“WHERE”不仅是一个坏主意,更像是一场等待发生的灾难。
-
我猜你必须这样做
... + columnName + " = ?;";
标签: java sql-server