gpt4 book ai didi

java-在java代码中使用select语句未分配给变量

转载 作者:行者123 更新时间:2023-12-01 10:51:16 25 4
gpt4 key购买 nike

我有一个java程序,我试图匹配文本字段输入中的用户名和密码,然后与该列表的“用户名”和“密码”列中的rs列表进行比较,但似乎变量没有获取用户名并传递给它并使循环失败并返回结果为 false,拒绝访问。我不明白为什么它曾经有效。以及为什么如果我尝试表中的第一个元组(用户名和通行证)它会起作用。下面是代码

public boolean loginAccount(String username, String password) {
String dataUsername;
String dataPassword;
boolean result = false;

try {
String sql = "SELECT Username, Password FROM Accounts";
ResultSet rs = st.executeQuery(sql);
while (rs.next()) {
dataUsername = rs.getString("Username");
dataPassword = rs.getString("Password");
if (username.equals(dataUsername) && password.equals(dataPassword)) {
result = true;
}
}
if (result)
populateAccount(username);
} catch (Exception ex) {
System.out.println("Error: " + ex);
}
return result;
}

最佳答案

一些提示...

我希望这只是一个有趣的目的,因为对 SQL Server 进行查询下载整个帐户表并执行一段时间是非常糟糕的做法。

  • 每次有人登录时,您都会传输整个表格
  • 您使用 While 循环在 Java 服务器中执行字符串比较。您拥有专为执行此操作而设计的 SQL 引擎,广告的运行速度将比您想象的更快。

我建议:

  • 从用户名和密码字符串中删除特殊字符(以避免 SQL 注入(inject))
  • 使用查询中指定的用户名和密码执行“SELECT ... WHERE ...”
  • 检查数据库回复是否超过 0 行

另一个提示:考虑使用 MD5 作为 passw(标准做法)

关于java-在java代码中使用select语句未分配给变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33884432/

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