Validar login comparando usuario e senha com Banco Dados? [ Resolvido ]

6 respostas
R

Olá Pessoal Alguem poderia me ajudar nao estou conseguindo validar o login para acessar o programa,
eu acesso o programa com a senha q esta cadastrada abaixo mas depois acesso um menu e cadastro um novo usuario mas nao consigo compara-lo para validar o ligin.

o codigo abaixo:

Frama Login:

package Farma.View.Contoller; 

import java.awt.BorderLayout; 
import java.awt.Dimension; 

import javax.swing.JDialog; 
import javax.swing.JFrame; 
import javax.swing.JOptionPane; 

import Farma.Listeners.BotoesListeners; 
import Farma.Listeners.PanelBotoes; 


public class FrameLogin extends JDialog{ 
private static final long serialVersionUID = 1L; 


private PanelLogin panelLogin; 
private PanelBotoes panelBotoes; 

private FramePrincipal framePrincipal; 

public FrameLogin(FramePrincipal owner, String titulo, boolean modal) { 
super(owner, titulo, modal); 
framePrincipal = owner; 
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); 
setSize(new Dimension(220, 165)); 
setResizable(false); 
initialize(); 

} 

private void initialize() { 
add(getPanelLogin(), BorderLayout.NORTH); 

add(getPanelBotoes(), BorderLayout.SOUTH); 
getRootPane().setDefaultButton(getPanelBotoes().getOkButton()); 
} 

private PanelLogin getPanelLogin() { 
if (panelLogin == null) { 
panelLogin = new PanelLogin(); 
} 
return panelLogin; 
} 

private PanelBotoes getPanelBotoes() { 
if (panelBotoes == null) { 
panelBotoes = new PanelBotoes(); 

panelBotoes.addBotoesListener(new BotoesListeners() { 


@Override 
public void cancelarPerformed() { 
dispose(); 

} 

@Override 
	public void okPerformed() {
					boolean login = verif_login();
				                 boolean login2 = validar();
					if ((login) == true || (login2) == true) {
						framePrincipal.getfarmacia().setEnabled(true);
						framePrincipal.getRelat().setEnabled(true);
						framePrincipal.getAjuda().setEnabled(true);
						dispose();

					}

else { 
panelLogin.getUsuarioField().requestFocus(); 
panelLogin.getUsuarioField().selectAll(); 

} 

} 



}); 

} 
return panelBotoes; 
} 

@SuppressWarnings("deprecation") 
public boolean verif_login() { 
[color=red]String usuario = "admin";   // senha padrao
String senha = "admin";    // senha padrao[/color]
if ((panelLogin.getUsuarioField().getText().equalsIgnoreCase(usuario)) 
|| (panelLogin.getSenhaField().getText().equals(senha))) 

{ 
JOptionPane.showMessageDialog(null, "Acesso Permitido"); 

return true; 
} else { 
JOptionPane.showMessageDialog(null, 
"Usuários ou senha incorretos!!", "Notificação", 
JOptionPane.WARNING_MESSAGE); 

return false; 
} 
} 


/* @SuppressWarnings("deprecation")  [color=red]// AQUI TENTEI PERCORREI O ARRAY QUE TEM OS DADOS NO BANCO DE DADOS PÁRA VALIDAR O LOGIN[/color]public boolean validar(){ 

@SuppressWarnings("unused") 
UsuarioBD usuarioBD = new UsuarioBD(); 
try{ 
for( Usuario valida : usuarioBD.consulta()){ 
if ((panelLogin.getUsuarioField().getText().equalsIgnoreCase(valida.getUsuario_login())) 
&& (panelLogin.getSenhaField().getText().equals(valida.getSenha_login()))) 
{ 

JOptionPane.showMessageDialog(null, "Acesso Permitido"); 

return true; 
} 

}} 



catch (Exception e) { 
return false; 
} 


}*/ 


} 

//========================================================================== 
UsuarioBD que faz a busca o banco: 

public ArrayList <Usuario> consulta() throws SQLException{ 

String url = "jdbc:postgresql://localhost:5432/farmacia"; 
String user = "postgres"; 
String password = "admin"; 

ArrayList <Usuario> result = new ArrayList<Usuario>(); 

Connection connection = DriverManager.getConnection(url, user, password); 
PreparedStatement preparedStatement = connection.prepareStatement("select * from cad_usuario order by usuario_login"); 
ResultSet rs = preparedStatement.executeQuery(); 


while (rs.next()) { 

Usuario usuario = new Usuario(); 

usuario.setId(rs.getString("id")); 
usuario.setUsuario_login(rs.getString("usuario_login")); 
usuario.setSenha_login(rs.getString("senha_login")); 



result.add(usuario); 
} 
connection.close(); 
preparedStatement.close(); 
rs.close(); 

return result; 
}

6 Respostas

U

oh cara vc poderia editar seu post e colocar as tags de code para poder facilitar a visualização do seu codigo
vlw
abs

R
public boolean validar(){

		boolean val = false;
		UsuarioBD usuarioBD = new UsuarioBD();
		try{
			for( Usuario valida : usuarioBD.consulta()){
				if ((panelLogin.getUsuarioField().getText().equalsIgnoreCase(valida.getUsuario_login()))
						&& (panelLogin.getSenhaField().getText().equals(valida.getSenha_login())))
				{
					
					JOptionPane.showMessageDialog(null, "Acesso Permitido");

			 val = true;
			}
			}}
		
			
		
		catch (Exception e) {
			JOptionPane.showMessageDialog(null,
				"Usuários ou senha incorretos!!", "Notificação",
				JOptionPane.WARNING_MESSAGE);
			val = false;
			}
		
		return val ;
	
		
	}
	
	
}
F

É bem mais facil vc usar uma tabela de usuarios e fazer um select passando o usuario e senha para consultar no banco.

bem mais simples e mais rapido do que esse modo que vc esta fazendo.

[]'s

R

Vdd msm…
vou moda-lo aqui.
vlwss

P

Cara não entendi por que usa esse for:

Voce deveria montar um objeto usuario com os dados do formulário:

E chamar um metodo validaLogin passando o usuario de parametro:
Ex:

if(new UsuarioDB().validaLogin(usuario)){
  //FAZ O QUE QUIZER
}else{
  //usuario invalido
}

O Valida login retorna um booelan

public boolean validaLogin(Usuario usuario){
         Connection connection = DriverManager.getConnection(url, user, password);   
         PreparedStatement preparedStatement = connection.prepareStatement("select usuario from cad_usuario where usuario = ? and senha ?");   
         preparedStatement.setString(1,usuario.getLogin());
         preparedStatement.setString(2,usuario.getSenha());
         ResultSet rs = preparedStatement.executeQuery();   
         return rs.next();
}
R

Pedrosa Obrigado pela dica, do geito que falou é bem mais simples, mas acabei fazendo do geito abaixo msm e ja esta ok.

abç...

package Farma.View.Contoller;

import java.awt.BorderLayout;
import java.awt.Dimension;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JOptionPane;

import Farma.DAO.UsuarioBD;
import Farma.Listeners.BotoesListeners;
import Farma.Listeners.PanelBotoes;
import Farma.Model.Usuario;


public class FrameLogin extends JDialog{
	private static final long serialVersionUID = 1L;
	
	
	private PanelLogin panelLogin;
	private PanelBotoes panelBotoes;
	
	private FramePrincipal framePrincipal;

	public FrameLogin(FramePrincipal owner, String titulo, boolean modal) {
		super(owner, titulo, modal);
		framePrincipal = owner;
		setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
		setSize(new Dimension(220, 165));
		setResizable(false);
		initialize();

	}

	private void initialize() {
		add(getPanelLogin(), BorderLayout.NORTH);
		
		add(getPanelBotoes(), BorderLayout.SOUTH);
		getRootPane().setDefaultButton(getPanelBotoes().getOkButton());
	}

	private PanelLogin getPanelLogin() {
		if (panelLogin == null) {
			panelLogin = new PanelLogin();
		}
		return panelLogin;
	}

	private PanelBotoes getPanelBotoes() {
		if (panelBotoes == null) {
			panelBotoes = new PanelBotoes();

			panelBotoes.addBotoesListener(new BotoesListeners() {
				

//=================================================================
				
		public void cancelarPerformed() {
					dispose();

				}

				@Override
				public void okPerformed() {
					boolean login = validar();
					boolean admin = verif_login();
					
					if ((login) == true || (admin)== true) {
						
						framePrincipal.getfarmacia().setEnabled(true);
						framePrincipal.getRelat().setEnabled(true);
						framePrincipal.getAjuda().setEnabled(true);
						JOptionPane.showMessageDialog(null, "Acesso Permitido");
						dispose();

					}

					else {
						panelLogin.getUsuarioField().requestFocus();
						panelLogin.getUsuarioField().selectAll();
						panelLogin.getSenhaField().selectAll();
						panelLogin.usuarioField.setText("");
					 
						JOptionPane.showMessageDialog(null,"Usuário ou senha incorreto!!", "Notificação",
								JOptionPane.WARNING_MESSAGE);
					
						}
					}
			});

		}
		return panelBotoes;
	}
//=======================================================================================================
// acesso principal senha de admim
	@SuppressWarnings("deprecation")
	public boolean verif_login() {
		String usuario = "admin";
		String senha = "admin";
		if ((panelLogin.getUsuarioField().getText().equalsIgnoreCase(usuario))
				&& (panelLogin.getSenhaField().getText().equals(senha))) {
					return true;
		} else {
			
			return false;
		}
	}
//======================================================================================
	// compara usuario e senha com o banco de dados atravez arraylist
	@SuppressWarnings("deprecation")
	public boolean validar(){
		
		boolean val = false ;
		UsuarioBD usuarioBD = new UsuarioBD();
		try{
			for( Usuario valida : usuarioBD.consulta()){
				if ((panelLogin.getUsuarioField().getText().equalsIgnoreCase(valida.getUsuario_login()))
						&& (panelLogin.getSenhaField().getText().equals(valida.getSenha_login())))
				{
					
					val = true;
			 }}}
		
	catch (Exception e) {				
			val = false;
		 }
			
			return val ;
	
		}
	
}


#####################################################################
Consulta Banco:
public ArrayList <Usuario> consulta() throws SQLException{
	
	String url = "jdbc:postgresql://localhost:5432/farmacia";
	String user = "postgres";
	String password = "admin";
	
	ArrayList <Usuario> result = new ArrayList<Usuario>();
	
	Connection connection = DriverManager.getConnection(url, user, password);
	PreparedStatement preparedStatement = connection.prepareStatement("select * from cad_usuario order by usuario_login");
	ResultSet rs = preparedStatement.executeQuery();
	

	while (rs.next()) {
		
		Usuario usuario = new Usuario();
		
		usuario.setId(rs.getString("id"));
		usuario.setUsuario_login(rs.getString("usuario_login"));
		usuario.setSenha_login(rs.getString("senha_login"));
		
		

		result.add(usuario);
	}
	connection.close();
	preparedStatement.close();
	rs.close();

	return result;
}
}
Criado 30 de novembro de 2009
Ultima resposta 30 de nov. de 2009
Respostas 6
Participantes 4