繁体   English   中英

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

[英]java- using select statement in java code not being assigned to variable

我有一个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进行查询以下载整个Accounts表并执行一会儿是不好的做法。

  • 每当有人登录时,您都会转移整个表格
  • 您可以在带有While循环的Java服务器中执行字符串比较。 您拥有旨在实现此目的的SQL引擎,广告的运行速度将超出您的想象。

我会建议:

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

另一个提示:考虑将MD5用于密码(标准做法)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM