Java 改进登录功能,解决循环问题

Java 改进登录功能,解决循环问题,java,login,Java,Login,我是新来的。尝试进行数据库检索演示以登录系统,以下是我的功能代码: 我将调用goLogin函数并传入输入的id和密码以进行验证,我还将从数据库中获取所有id以进行检查。ID正确后,只需检查密码 public void goLogin(String id, String pass){ String[99] allID = getAllIDFromDB(); for(int i=0;i<allID.length;i++){ if(allID[i]==id){ St

我是新来的。尝试进行数据库检索演示以登录系统,以下是我的功能代码:

我将调用
goLogin
函数并传入输入的id和密码以进行验证,我还将从数据库中获取所有id以进行检查。ID正确后,只需检查密码

public void goLogin(String id, String pass){

String[99] allID = getAllIDFromDB();    

for(int i=0;i<allID.length;i++){

   if(allID[i]==id){

    String passwordDB = getPasswordFromDB(id);

    if(pass==password){
           System.out.println("Correct Password");
    }else{
           System.out.println("Wrong Password");
    }


   }

}
public void goLogin(字符串id,字符串传递){
字符串[99]allID=getAllIDFromDB();

对于(int i=0;i首先,为什么要从数据库中检索所有用户id,而不是进行sql查询以基于此id检索此用户的行

大概是这样的:

Select * from `users` where id = {id};

如果要停止循环发现错误的密码,请在else范围中添加break。

是的,您甚至可以执行以下操作:

Select * from `users` where id = {id} and password = {password}

另外,要在Java中比较
String
s,应该使用
string1.equals(string2)
,而不是
=
操作符。

在我看来,程序的主要问题是实现登录功能的逻辑

登录函数的实现可以用不同的模式实现,基于您的程序代码,我假设您只需要一个最基本的登录函数,允许程序对用户输入的ID和密码进行验证

实际上,这种基本的验证可以在数据库查询中完成。您只需获取用户输入的ID和密码,让数据库查询进行过滤,并确定用户输入的ID和密码是否有效

首先使用此查询:

Select DATABASEID From Database Where DATABASEID=inputID and DATABASEPASSWORD=inputPassword;
Java代码:

public void goLogin(String id, String pass){

// Since i changed the Query, you need to pass in the ID and Password to let the Query to filtering

String DatabaseID = getIDFromDB(id, pass);    

   // Simple Logic, If DatabaseID have value which mean the ID and Password is correct
   // Because the Database Query will return null if the ID and Password is Wrong

   if(DatabaseID!=null){
     System.out.println("ID and Password is Correct.");   
   }else{
     System.out.println("ID or Password is Incorrect.");
   }

}
此逻辑非常简单,但也有一些缺点,与代码相比,唯一的优点是:

  • 仍然能够对用户输入的ID和密码进行基本验证
  • 删除循环的
    和其他不必要的
    (如果有)
  • 只能访问数据库一次
  • 希望这会有所帮助。

    可能的副本