gpt4 book ai didi

Java - 循环遍历数据库记录的有效方法

转载 作者:行者123 更新时间:2023-12-01 20:54:18 27 4
gpt4 key购买 nike

我想验证数据库列中是否存在电话号码(TelephoneNumber)。如果存在,我将返回true,否则返回false此代码不仅用于验证 TelephoneNumber 列,它还可以验证其他数据库列,例如 FirstNameLastNameEmailAddress > 等等

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);
}

即使在数据库中找不到这些值,上述代码也会返回一个真值。不确定我在这里做错了什么。谁能帮帮我

最佳答案

我认为您在这里没有正确使用数据库。数据库旨在有效地迭代给定表中的所有记录并回答业务问题。另一方面,Java 并不是真正为此而设计的。目前,您正在 Java 中迭代整个表来搜索匹配项。这存在以下问题:

  • 潜在的大量数据正在您的数据库和 Java 应用之间通过网络传输
  • 在此搜索过程中无法使用索引等辅助工具,这可能效率低下
  • Java 并不是真正为执行低级数据库操作而构建的,因此应用程序中花费的计算时间很容易超出数据库执行同一查询所需的资源。可以肯定的是,此操作会占用大量资源。


在您的情况下,由于您使用的是 SQL Server,因此以下单个查询应该完成与当前代码相同的事情:

SELECT TOP 1 TelephoneNumber FROM Application WHERE TelephoneNumber = '6553438888';

这是一个您可以尝试的代码片段:

try {
PreparedStatement ps = null;
String sql = "SELECT TOP 1 TelephoneNumber FROM Application ";
sql += "WHERE TelephoneNumber = ?;";
ps = conn.prepareStatement(sql);
ps.setString(1, "6553438888");
ResultSet rs = ps.executeQuery();
if (rs.next()) {
System.out.println("Found the phone number");
}
else {
System.out.println("Did not find the phone number");
}
} catch (SQLException e) {
// handle exception
} finally {
// cleanup, close connections, etc.
}

如果未找到该号码,则上述结果集将为空,并且对 rs.next() 的调用将返回 false。这可以让您确定是否找到了相关记录。

关于Java - 循环遍历数据库记录的有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42621403/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com