Login em Java

01/11/2018

2

Pessoal boa noite, estou voltando a fazer minha facul e estou com um trabalho em java pra fazer.

neste trabalho tenho uma tela de login aonde estou tendo um pequeno problema: "Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: com.microsoft.sqlserver.jdbc.SQLServerStatement cannot be cast to java.sql.PreparedStatement".

segue o código:
package Classes;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

/**
 *
 * @author YURIMENECHELLI
 */
public class conexao {
   
    public static Connection conexaoBD;
    
    public static Connection getConexaoBD() {
        return conexaoBD;
    }

    public static void setConexaoBD(Connection conexaoBD) {
        conexao.conexaoBD = conexaoBD;
    }
    
    public static boolean ConectarBD(){
        try{
            Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
            conexaoBD = DriverManager.getConnection("jdbc:sqlserver://localhost:1433;databaseName=projSustentabilidade", "sa","12345");
            System.out.println("Conexão obtida com sucesso!");
            
            return true;
        }catch(SQLException ex){
            System.out.println("SQLException: "+ ex.getMessage());
            System.out.println("SQLState: "+ ex.getSQLState());
            System.out.println("VendorError: "+ ex.getErrorCode());
            return false;
            
        }catch(Exception e){
            System.out.println("Não foi possível conectar ao banco: "+ e);
            return false;
        }
    }
}


no meu login esta assim:
    private void btnEntrarActionPerformed(java.awt.event.ActionEvent evt) {                                          
        String login = new String(((JTextField) edtLogin).getText());     
        String senha = new String(((JPasswordField) edtPass).getPassword());
        if (edtLogin.getText().equals("") || edtPass.getText().equals(""))// se login e senha em branco
                 JOptionPane.showMessageDialog(null,"Campos login e senha são obrigatórios");//mensagem
             else
             {
               try
               {
                String sql = "select * from Login where APELIDOID like '" + login +"' and SENHA like '"+ senha +"'";
                PreparedStatement stm = (PreparedStatement) conexao.getConexaoBD().createStatement();
                rs = stm.executeQuery(sql);// executa a varialvel sql acima


                   if(rs.first())// conecta e busca o primeiro registro igual e compara se for certo entra senao da erro no CATCH
                   {
                    JOptionPane.showMessageDialog(null,"Login Efetuado com Sucesso!");
                     controla = rs.getString("Estatus"); 


                       if ("A".equals(controla)) // TIPO DE ACESSO DO ADMINISTRADOR
                       {
                       new frmPrincipal().setVisible(true);// chama o formulario principal ao conecta
                     dispose();// fecha o formulario de login ao entrar no principal
                       }
                   }
                   else{
                        JOptionPane.showMessageDialog(null, "Usuário não ativo");
                        edtLogin.requestFocus();
                       }

                       } catch (SQLException erro)
                       {
                 JOptionPane.showMessageDialog(null, "Problemas de conexão com a base de dados");
                               }
        }
    }                                         

    public static void main(String args[]) {
        
        java.awt.EventQueue.invokeLater(() -> {
            new frmLogin().setVisible(true);
        });


Por favor me ajudem.
Responder

Post mais votado

04/11/2018

java.lang.ClassCastException: com.microsoft.sqlserver.jdbc.SQLServerStatement cannot be cast to java.sql.PreparedStatement

Significa que você tem um import errado, deve ser na classe que tem o método btnEntrarActionPerformed(). O import certo é esse: java.sql.PreparedStatement
Responder

Mais Posts

Por favor alguém poderia me ajudar?
Responder
×
+1 DevUP
Acesso diário, +1 DevUP
Parabéns, você está investindo na sua carreira