Erro no Login

4 respostas
R

Buenas, antes de mais nada....

Belíssimo fórum, ótimo conteúdo!!!

Conheci Java faz pouco tempo e já amo muito tudo isso..

Eu estou em um projeto de programa onde terá uma tela de login, antes de iniciar o prog...

Pois bem, antes de mais nada, estou usando:
MySql 5.0
NetBeans IDE 6.5

Eu não sei ao certo se postei no lugar certo, acho que seria em banco de dados, mas pode ser que também não seja...

Depois de muitas tentativas, resolvi verificar com os mais experientes em java e mysql, pq deve ser um erro básico e logo saberão, eu não sei o que que tem de errado. Vamos ao problema:

Eu não consigo fazer a autenticação com o banco de dados e minha "mini aplicação java"...
Pelo amor de Deus, pq eu não consigo fazer esta coisa simples?? não sei mais o que fazer...

Abaixo o código e obrigado.

package teste;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.sql.*;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class Login extends JFrame{
   /* Declarando variaveis */
    static Login janela ;
    public JTextField usuario ;
    public JPasswordField password ;
    public String userid, erro, asenha ;

    public void fechar(){
        this.dispose();
        }

   public Login() {
      /* Constroi a tela de LOGIN com gridBaglayout */
      Container cp = getContentPane();
      GridBagLayout gridbag = new GridBagLayout();
      GridBagConstraints c = new GridBagConstraints();
      cp.setLayout(gridbag);

      getContentPane().setBackground(Color.white);

      JLabel intro = new JLabel("Digite seu Usuário e Senha");
       c.gridwidth = 2;
       c.weightx = 0.5;
       c.gridx = 0;
       c.gridy = 0;
       gridbag.setConstraints(intro, c);
       getContentPane().add(intro);

       JLabel user = new JLabel("Usuario:");
       c.gridwidth = 1;
       c.gridx = 0;
       c.gridy = 2;
       gridbag.setConstraints(user, c);
       getContentPane().add(user);

       JLabel senha = new JLabel("Senha:");
       c.gridwidth = 1;
       c.gridx = 0;
       c.gridy = 3;
       gridbag.setConstraints(senha, c);
       getContentPane().add(senha);

       usuario = new JTextField(15);
       c.gridwidth = 1;
       c.gridx = 1;
       c.gridy = 2;
       gridbag.setConstraints(usuario, c);
       getContentPane().add(usuario);

       password = new JPasswordField(15);
       c.gridwidth = 1;
       c.gridx = 1;
       c.gridy = 3;
       gridbag.setConstraints(password, c);
       getContentPane().add(password);

       JButton entra = new JButton("Entrar");
       c.gridwidth = 1;
       c.gridx = 0;
       c.gridy = 4;
       gridbag.setConstraints(entra, c);
       getContentPane().add(entra);

       JButton sai = new JButton("Sair");
       c.gridwidth = 1;
       c.gridx = 2;
       c.gridy = 4;
       gridbag.setConstraints(sai, c);
       getContentPane().add(sai);
       sai.addActionListener(new ActionListener() {

       /* Funcao de sair*/
       public void actionPerformed(ActionEvent e) {
               fechar();
            }
        });




       /* Funcao de entrar  */
       entra.addActionListener( new ActionListener()

         {
      public void actionPerformed(ActionEvent e) {
         validar();
   }});

      
}

   public void validar() {
      /* Confere usuario e senha com um mysql */
         Connection con;
         Statement stmt;
         ResultSet rs;

         String user = new String(usuario.getText());
         String senhas = new String(password.getPassword());
         /* Pega a senha de um mysql */
         try {
         Class.forName("com.mysql.jdbc.Driver");
         System.out.println("Driver OK");
                try {
            String url = "jdbc:mysql://localhost/testelogin";
            con = DriverManager.getConnection(url,"root","");
            stmt = con.createStatement();
                  try {
                     rs = stmt.executeQuery("SELECT senha FROM usuarios where login = '"+user+"' ");
                     rs.next();
                     asenha = rs.getString("'senha'");
                        } catch (SQLException exp) {
                           erro = erro+"Erro na requisicao.";
                           System.out.println("SQLException: " + exp.getMessage());
                           exp.printStackTrace();
                        }
               } catch (SQLException exp) {
               erro = erro+"Conexao falha, verifique sua conexao com o banco de dados.";
               System.out.println("SQLException: " + exp.getMessage());
               exp.printStackTrace();
               }
         } catch(java.lang.ClassNotFoundException ext) {
            erro = "Problemas com o driver de conexao.";
            System.err.print("ClassNotFoundException: ");
            System.err.println(ext.getMessage());
         }

         /* Se devidamente autorizado */
          if ( senhas.equals(asenha) )
          {
               JOptionPane.showMessageDialog(null,"Autenticação efetuada com sucesso.");
          }
          else {
              JOptionPane.showMessageDialog(null,"Acesso negado."+erro,"Atenção.", JOptionPane.WARNING_MESSAGE);
                    }
   }

   /* AQUI TÁ O MAIN MAGNATA!!!! */
   public static void main(String[] args) {
      janela = new Login() ;
      janela.setTitle("Login");
      janela.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      janela.pack();
      janela.setVisible(true);
   }
}

Vlw!!!

4 Respostas

gilmaslima
//Essa linha parace meio estranha:
asenha = rs.getString("'senha'");  

// Acho que o correto seria
asenha = rs.getString("senha");

Tente imprimir o valor retornado no nessa linha pra ver se bate com o valor esperado.
Veja se a variavel user que é usada no select tem algum valor, pode ser que seu select não esteja retornando nada.

flw!

R

gilmaslima

Corrigi esta linha, realmente estava errada, foi um teste na verdade pois eu achei que ele não estava conseguindo buscar a senha…

Fiz o que tu me aconselhou, e o user esta retornando o valor, o problema está no select…

Mandei imprimir uma msg no console assim que passasse pela linha do select, e não imprimiu…

Mas bateu dúvida agora, to achando até que o problema é no if…

o Que que acha?

gilmaslima

Imprima o select e rode ele no banco, veja se retorna alguma coisa.
Quanto ao seu if parace estar certo mesmo, mas imprima o valor da variavel senhas só pra ter certeza.

flw!

R

Cara, mil perdões mesmo!!!

Seguinte, tava certo o tempo inteiro o código… o que faltou foi adicionar os jars…

Cara, eu to com vontade de dar um tiro na minha cara, juro!!!

Desculpa por tomar teu tempo…

Foi mal aew mesmo!!!

Flw aew…

Criado 28 de janeiro de 2009
Ultima resposta 29 de jan. de 2009
Respostas 4
Participantes 2