Я новичок. Пытаюсь выполнить демонстрацию извлечения базы данных для входа в систему, вот мой код функции:
Я вызову функцию goLogin и передам входной идентификатор и пароль для проверки, а также получу все идентификаторы из базы данных для проверки. После того, как 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");
}
}
}
Мои коллеги говорят, что я использовал слишком много, если еще, и я могу сократить код и улучшить программу, и я столкнулся с некоторыми проблемами при зацикливании, например, когда идентификатор и пароль верны, программа все равно продолжит цикл.
Есть ли предложения по улучшению этой функции?




Прежде всего, зачем извлекать все идентификаторы пользователей из базы данных, а не делать sql-запрос для получения строки этого пользователя на основе этого идентификатора.
что-то вроде этого:
Select * from `users` where id = {id};
И если вы хотите прекратить зацикливаться, был обнаружен неправильный пароль, добавьте break в область else.
Да, вы даже могли:
Select * from `users` where id = {id} and password = {password}
Кроме того, для сравнения String в Java следует использовать string1.equals(string2), а не оператор ==.
На мой взгляд, основная проблема вашей программы - это ваша логика для реализации функции входа в систему.
Реализация функции входа в систему может быть реализована с помощью различных шаблонов. Основываясь на вашем программном коде, я предполагаю, что вам просто нужна самая простая функция входа в систему, которая позволяет программе выполнять проверку идентификатора ввода пользователя и пароля.
Фактически, эту базовую проверку можно выполнить в запросе к базе данных. Вы можете просто взять введенный пользователем идентификатор и пароль и позволить запросу к базе данных выполнить фильтрацию и определить, являются ли введенные пользователем идентификатор и пароль действительными или недействительными.
Сначала используйте этот запрос:
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.");
}
}
Эта логика очень проста, но также имеет некоторый недостаток, единственное сравнение преимуществ с вашим кодом:
for loop и прочие ненужные if else.Надеюсь, это поможет.
Возможный дубликат Как сравнить строки в Java?