Criação de Login

3 respostas
mymyself

entao to precisando fazer um sistema de login…sem muito implementação…so preciso que ele olhe no banco…se a senha e o usuario baterem…esta logado…se nao…nao logado…pode me dar uma ajuda…

fiz o codigo abaixo mais nao esta muito bom nao…sugetões…

public boolean autentica(String usuario, String password) {  
		          boolean ok;  
		      
		          
				         try {  
		            String sql="SELECT * FROM login WHERE nome='"+usuario+" AND senha="+password+"'" ;  
		            conexao cx=new conexao();
		        	Connection conex=cx.conectar();
		            
		            PreparedStatement pstm = conex.prepareStatement(sql);  
		            pstm.setString(1, usuario);  
		            pstm.setString(2, password);
		            ResultSet rs = pstm.executeQuery("SELECT * FROM login WHERE nome='"+usuario+" AND senha="+password+"'");  
		            
		            //olha o que faltou aqui:  
		                            rs.next();
		                         
		                        	  if( 
		                        		       rs.getString("nome") != null && 
		                        		       rs.getString("nome").equals(usuario) &&  
		                        		       rs.getString("senha").equals(password))  
		                        		   {
		                        	 
		                        		       ok = true;  
		                        		   }
		         }catch(SQLException ex){}
		         return false;
	    }

chamando o codigo…

OK.addActionListener(new ActionListener(){
				public void actionPerformed(ActionEvent e){
					
		boolean autenticado = autentica(nome.getText(),senha.getSelectedText());
			if(autenticado){
				 JanelaInicial janela = new JanelaInicial();
			}else{
JOptionPane.showMessageDialog(null,"USUARIO OU SENHA INVALIDA!","Mensagem do programa",JOptionPane.ERROR_MESSAGE);				
			}
//aki coloco msma senha e usuario do banco porem me retorna falso....
				
					}
			}		
	);

OBS: a variavel nome e uma Jtextfield e a senha uma jpasswordfield…

VLW

3 Respostas

pmlm

O único return do teu método é “return false”.

E o teu método dá erro, já que estás a usar mal PreparedStatement. Não dás conta disso porque estás a esconder a excepção em catch(SQLException ex){}

E

acho que a linha 4 do seu segundo código deveria ser assim:

boolean  autenticado = autentica(nome.getText(),senha.getText());

Se me lembro bem, o getSelectedText() pega somente o texto selecionado.

Outra coisa, na linha 6 do seu primeiro código, coloca assim:

String sql="SELECT * FROM login WHERE nome=? AND senha=?" ;

Assim, quando você faz o pstm.setString(1, usuario) e pstm.setString(2, password), você pega o primeiro interrogação e substitui por usuário, e no outro, o segundo interrogação e substitui por password.

E no lugar da linha 13, você faz o seguinte

ResultSet rs = pstm.executeQuery();

Sem passar a consulta novamente.

E, se a consulta não encontrou nenhum registro, na linha rs.getString(…) vai dar erro, pois não tem nenhum registro. O ideal seria algo assim:

ok = rs.next();

Porque, se encontrar algum registro (que já está sendo validado na própria consulta), quer dizer que existe um usuário e senha equivalente certo? Então não precisa verificar novamente.

mymyself

VLW evefuji…

Criado 10 de novembro de 2010
Ultima resposta 10 de nov. de 2010
Respostas 3
Participantes 3