当前位置: 首页 > 知识库问答 >
问题:

JDBC登录,如果在数据库中找不到,则要求用户重新输入用户名和密码

李意致
2023-03-14

所以我尝试着练习使用数据库,我决定制作一个银行系统。我正在使用MariaDB。我想让用户可以登录,如果信息与数据库中的任何内容都不匹配,他们必须重新输入用户名和密码,直到匹配为止,但我无法确定。这是我第一次在java中实现sql,所以如果我犯了任何错误,我深表歉意。我已经研究过了,但我能找到的解决方案是使用swing或javafx,但我现在不想制作gui。无论如何,我真的不确定我在这部分做什么。

public void loginAccount(Connection conn) throws SQLException {
        String login;
        ResultSet rs;

        do {
            System.out.print("Enter Username: ");
            Username = in.nextLine();
            System.out.print("Enter Password: ");
            Password = in.nextLine();

            login = "SELECT * FROM Person WHERE Username = ? AND AccPassword = ?";
            PreparedStatement ps = conn.prepareStatement(login);

            ps.setString(1, Username);
            ps.setString(2, Password);

            rs = ps.executeQuery(login);

        }   while (!rs.next());
    }

我一直在学习java。sql。SQLSyntaxErrorException:您的SQL语法有错误;请查看与您的MariaDB服务器版本相对应的手册,以了解要在“”附近使用的正确语法?和AccPassword=?'在第1行

还有,我原来

login="SELECT*From Person WHERE Username="Username"AND AccPassword="Password;

但我在某处读到,使用它是不好的做法。不确定这是不是真的。

共有2个答案

钦景胜
2023-03-14

您使用了错误的PreparedStatement方法。

您应该使用

rs = ps.executeQuery();

以便在占位符实际具有值的位置执行语句。

陆弘光
2023-03-14

您打算调用PreparedStatement。executeQuery()

java prettyprint-override">rs = ps.executeQuery();

但是您调用了一个静态方法语句。executeQuery(字符串sql)

rs = ps.executeQuery(login);
 类似资料:
  • 在JSP下,在JDBC连接成功之后,并且ResultSet正在显示一些价值。 如何检查用户在文本字段(使用HTML表单)中输入的登录值(用户名和密码)是否正确并存在于数据库中? 编辑:无论是否输入凭据,它都显示不正确的用户名和密码:

  • 我在我的应用程序中使用Spring MVC,登录是通过Spring Security验证的。我有以下两个方法在我的类,公共User细节loadUserByUsername(String userName)抛出UsernameNotFoundExc0019,DataAccessExc0019{ 我对Spring比较陌生,对Spring的安全性部分不太了解。在我的文件,我有以下内容, 我的登录表单的操

  • 问题内容: 在Redis中可以使用用户名,密码和数据库吗? 这个问题的原因是因为在官方的 pyramid_redis_sessions 文档(http://pyramid-redis- sessions.readthedocs.io/en/latest/gettingstarted.html )中,该参数… …(例如,在Python / Pyramid内部使用)建议使用用户名,密码和db。 但是,

  • 我正在尝试制作一个使用 DBMS 的用户和密码的登录屏幕。澄清一下:没有用户表,只有数据库访问权限。 明确地说,我想从用户输入中获得用户和密码,而不是硬编码它们。

  • 问题内容: 我需要输入USER表的USER_ID字段作为另一个表中的外键。因此,我认为我需要在用户登录时启动一个会话。我很难让它在任何地方回显。我能够启动一个会话,该会话允许我回显USERNAME,但无法将其复制为ID。 请帮忙吗?我的处理代码如下。我还粘贴了本节,我暂时尝试对其进行回显以进行测试。 处理脚本: 我希望USER_ID出现在哪里: 问题答案: 使用FETCH_ASSOC而不是FETC

  • 我已经安装了Jenkins ver。OSX 10.11.3上的1.653,使用标准安装程序并添加git插件。我试着从github为公共项目创建一个作业,它成功了。现在,我试图创建私人回购作业使用用户名和密码,但它总是失败。这是日志: 在工作区中构建/Users/Shared/Jenkins/Home/workspace/MyProject git rev-parse --is-inside-wor