Postgre SQL / Java比较数据库中的用户名和散列密码

时间:2018-03-28 22:47:15

标签: java sql postgresql

我正在尝试实现一个要求用户输入用户名的功能。然后检查输入的用户名是否在数据库中。在开始编写更多函数之前,下面的代码是测试代码。我的问题是,当输入的用户名在数据库中不存在时,代码不会打印出来。但是,当用户名存在时,它会打印出来。例如,ohm34存在于数据库中,因此当程序运行时,它会打印:User Name Does Exist。 brian23在数据库中不存在,因此它应该打印User Name Does Not Exist但不会。只需使用java ProgramName

即可运行该程序
 public void letLogin() throws SQLException
 {
    Scanner stdin;
    String sql;
    Statement select = connection.createStatement();
    String userNames;

    stdin = new Scanner(System.in);

    System.out.print("Enter your user name: ");
    user_name = stdin.next();

  sql = "SELECT " + "user_name " + "FROM" + " users8" + " where 
        user_name = "
        + "'" + user_name + "'";

  r = select.executeQuery(sql);
  if(r.next())
  {
     userNameCounter = r.getString("user_name");
     if(userNameCounter.equals(user_name))
     {
        System.out.println("User Name Does Exist");

     }

     else
     {
        System.out.println("User Does Not Exist");
     }
  }

  } // method letLogin

1 个答案:

答案 0 :(得分:3)

创建查询时,如果用户存在,则将在if(r.next())上输入。但是,如果用户不存在,则不会进入。您必须将else与if(r.next())放在一起。

示例:

sprintf("%.3f",a)

您不需要使用getString()来获取用户,因为您正在对查询中的用户进行测试,因此如果查询返回某些内容(r.next()== true),则该用户存在。