Botão de logar não realiza a ação

8 respostas Resolvido
programaçãojavamysql
H

Estou tendo um problema na hora de realizar o login - quando o botão entrar é apertado, nada acontece. Meu código segue abaixo. As partes em relação a conexão e ao login estão destacadas!

package conexao;

import java.sql.<em>;

import javax.swing.</em>;

import java.awt.*;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

public class login extends JFrame{

<strong>Connection conn = null;</strong>

<strong>ResultSet rs = null;</strong>

<strong>PreparedStatement pst = null;</strong>

private JPanel painelTop, painelL, painelPrin;

private JButton entrar;

private JLabel login, senha, titulo;

private JTextField Tlogin;

private JPasswordField Tsenha;

public login(){

<strong>conn = Conexao.ConnectDB();</strong>

painelTop = new JPanel();

painelL = new JPanel();

painelPrin = new JPanel();

entrar = new JButton(Entrar);

login = new JLabel(Login:);

senha= new JLabel("Senha: ");

Tlogin = new JTextField();

Tsenha = new JPasswordField();

titulo = new JLabel(Jornal Iserj);

Font f = new Font(SansSerif, Font.BOLD, 90);

setLayout(null);

setResizable(false);

painelTop.setBackground(new Color(0, 0, 0));

painelL.setBackground(new Color(255,165,79));

painelPrin.setBackground(new Color(255,255,255));

entrar.setBackground(new Color(255,165,79));

painelTop.setLayout(new java.awt.FlowLayout(

java.awt.FlowLayout.CENTER));

painelTop.setBounds(10, 10, 705, 150);

painelL.setLayout(new java.awt.FlowLayout(

java.awt.FlowLayout.CENTER));

painelL.setBounds(10, 150, 705, 50);

painelPrin.setLayout(new java.awt.FlowLayout(

java.awt.FlowLayout.CENTER));

painelPrin.setBounds(10, 200, 705, 200);

login.setBounds(250, 250, 150, 20);

senha.setBounds(250, 270, 150, 20);

Tlogin.setBounds(300, 250, 150, 20);

Tsenha.setBounds(300, 270, 150, 20);

entrar.setBounds(380, 300, 70, 20);

titulo.setForeground(Color.WHITE);

titulo.setFont(f);

<strong>entrar.addActionListener(new ActionListener() {</strong>

<strong><a class="mention" href="/u/override">@Override</a></strong>

<strong>public void actionPerformed(ActionEvent evt) {</strong>

<strong>try{</strong>

<strong>String sql = “SELECT usuario, senha FROM funcionario WHERE usuario=?  senha=?”;</strong>

<strong>pst = conn.prepareStatement(sql);</strong>

<strong>pst.setString(4, Tlogin.getText());</strong>

<strong>pst.setString(5, Tsenha.getText());</strong>

<strong>rs = pst.executeQuery();</strong>

<strong>if(rs.next()){</strong>

<strong>System.out.println(“Login bem-sucedido.”);</strong>

<strong>}else{</strong>

<strong>System.out.println(“Login mal-sucedido.”);</strong>

<strong>}</strong>

<strong>}</strong>

<strong>catch(Exception e){</strong>

<strong>}</strong>

<strong>}});</strong>

add(login);

add(senha);

add(entrar);

add(Tlogin);

add(Tsenha);

add(painelTop);

add(painelL);

add(painelPrin);

painelTop.add(titulo);

setTitle(“Login”);

setSize(740, 450);

setVisible(true);

setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

}

public static void main(String args[]){

login frame = new login();

}

}

E aqui vai o código de conexão:

package conexao;

import java.sql.<em>;

import javax.swing.</em>;

public class Conexao {

Connection conn = null;

public static Connection ConnectDB(){

try{

Class.forName(com.mysql.jdbc.Driver);

Connection conn = DriverManager.getConnection(jdbc:mysql://localhost:3306/jornaliserj”,“root”,"");

JOptionPane.showMessageDialog(null, Conectado!);

return conn;

}

catch(Exception e){

JOptionPane.showMessageDialog(null, e);

return null;

}

}

}

Alguém tem alguma noção do motivo do botão não estar realizando a ação e saberia me dar uma dica de como consertar? Sou extremamente iniciante no java :confused:

8 Respostas

R

DEBUG!!!
Se o botão tem o evento de click implementado não há como não executar-lo ao clicar. Sua lógica deve estar furada.
Debuga e vê oque de fato é executado, pq até seu catch está meio estranho.

R

Aliás: seu catch está vazio então se algum error ocorrer vc nem vai ver, dando a impressão que “nada acontece”.

H

Botei para mostrar o erro e dá erro na sintaxe SQL, em relação a senha. Vou dar uma olhada aqui. (pelo menos agora eu sei de onde vem o erro.)
Obrigada!

H

Ok, fiz umas modificações, mas o erro continua o mesmo.

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘senha = ‘1234’’ at line 1

Imagino eu que se refira ao Select:

String sql = “SELECT * FROM funcionario WHERE usuario = ?, senha = ?”;

Mas não consigo achar o erro :confused: Alguém sabe?

R

Pq vc faz setString no parametro 4 e 5 se a sql só tem 2 parâmetros?

H

É, isso tava errado mesmo, eu tinha mudado algumas coisas e esquecido de alterar os parâmetros… Mas o outro erro continua.

P
Solucao aceita
SELECT * FROM funcionario WHERE usuario = ? AND senha = ?
H

Era isso mesmo… :l O que a falta de atenção não faz, né. Obrigada!

Criado 18 de dezembro de 2017
Ultima resposta 18 de dez. de 2017
Respostas 8
Participantes 3