Проверьте имя пользователя и пароль в базе данных Java и введите неверный пароль, если false
Я хочу отобразить ошибку неправильное имя пользователя и пароль после сравнения введенного имени пользователя и пароля с базой данных пользователей в Java.
проблема в том, что он выполняет оператор if else для каждой строки, пока не доберется до правой строки b4, отображающей "имя пользователя и пароль правильные", но я хочу, чтобы он сверялся со всеми, и если он не существует, он отображает "Пожалуйста, проверьте имя пользователя и Пароль "
примечание: пожалуйста, игнорируйте соглашение об именах, проблема заключается в расположении операторов while, if и любых других рекомендуемых операторов цикла, но я не уверен в том, как его организовать, чтобы получить желаемый результат
вот мой код с комментариями
public void displayUsers(String f, String s) {
try {
String queryString = "SELECT SName, SPwd FROM staff";
ResultSet results = Statement.executeQuery(queryString);
while (results.next()) {
String staffname = results.getString("snameeee");
String password = results.getString("SPwd");
if ((f.equals(staffname)) && (s.equals(password))) {
JOptionPane.showMessageDialog(null, "Username and Password exist");
}else {
//JOptionPane.showMessageDialog(null, "Please Check Username and Password ");
}
results.close();
} catch (SQLException sql) {
out.println(sql);
}
6 ответов
Во-первых, не храните пароль в виде простого текста. Во-вторых, загрузка всех записей - очень неправильный подход к выполнению приведенного выше кода.
public void displayUsers(String f, String s) {
try {
String queryString = "SELECT * FROM staff where SName=? and SPwd=?";
//set this values using PreparedStatement
ResultSet results = ps.executeQuery(queryString); //where ps is Object of PreparedStatement
if(!results.next()) {
JOptionPane.showMessageDialog("Wrong Username and Password.");
}
} catch (SQLException sql) {
out.println(sql);
}finally{
//closing ResultSet,PreparedStatement and Connection object
}
Нет, то, что вы делаете, неправильно.
Загрузка всех записей не является хорошей практикой для проверки учетных данных.
Проходить username
Параметр к вашему запросу и проверка в базе данных.
1) Если пользователя не существует, сообщите username
не существует.
2) Если пользователь существует, проверьте password
с существующим пользователем базы данных password.
if (username.length()>0 && password.length()>0)
{
String query = "Select * from adminlogin Where Username='" + username + "' and Password='" + password + "'";
rs = sta.executeQuery(query);
if (rs.next())
{
home hme=new home();
this.setVisible(false);
hme.setVisible(true);
}
else
{
JOptionPane.showMessageDialog(null,"username and password are wrong ");
}
}
else
{
JOptionPane.showMessageDialog(null,"please field username and password ");
}
Используя флаг вы можете легко решить эту проблему. как это..
public void displayUsers(String f, String s) {
boolean flag = false;
try {
String queryString = "SELECT SName, SPwd FROM staff";
ResultSet results = Statement.executeQuery(queryString);
while (results.next()) {
String staffname = results.getString("SName");
String password = results.getString("SPwd");
if ((f.equals(staffname)) && (s.equals(password))) {
flag = true;
JOptionPane.showMessageDialog(null, "Username and Password exist");
}
results.close();
if(!flag){
JOptionPane.showMessageDialog(null, "Please Check Username and Password ");
}
} catch (SQLException sql) {
out.println(sql);
}
String queryString =" select count(*) as \"exists\" from credit where username=? and password=?";
//set this values using PreparedStatement
ps = con.prepareStatement(queryString);
ps.setString(1,f);
ps.setString(2,s);
ResultSet results = ps.executeQuery();
if (results.next()) {
int i = results.getInt("exists");
if(i==1)
{
JOptionPane.showMessageDialog(null, "Username and Password exist");
}
else{
JOptionPane.showMessageDialog(null, "Please Check Username and Password ");
}
Ты можешь использовать:
boolean exist = false;
String queryString = "SELECT SName, SPwd FROM staff";
ResultSet results = Statement.executeQuery(queryString);
while (results.next()) {
String staffname = results.getString("SName");
String password = results.getString("SPwd");
if ((f.equals(staffname)) && (s.equals(password))) {
exist = true;
JOptionPane.showMessageDialog(null, "Username and Password exist");
}
}
results.close();
if(!exist){
JOptionPane.showMessageDialog(null, "Please Check Username and Password ");
}
Но вы должны использовать это:
String queryString = "SELECT SName, SPwd FROM staff where SName=? and SPwd=?";
ps = con.prepareStatement(queryString);
ps.setString(1,f);
ps.setString(2,s);
ResultSet results = ps.executeQuery();
if (results.next()) {
JOptionPane.showMessageDialog(null, "Username and Password exist");
}else{
JOptionPane.showMessageDialog(null, "Please Check Username and Password ");
}
results.close();
con.close();