Preciso de ajuda para conectar o java com o bd e verificar login e senha, estou usando dao

4 respostas
D
Ele sempre entra no cath(erro ao conectar)
package util;   
  
import java.sql.Connection;   
import java.sql.DriverManager;   
import java.sql.SQLException;   
  
public class ConFactory {   
      
   public static final int ORACLE = 0;   
   private static final String OracleDriver = "oracle.jdbc.driver.OracleDriver";   
  
   public
 static Connection conexao(String url, String nome, String senha,   
         int banco) throws ClassNotFoundException, SQLException {   
      switch (banco) {         
      case ORACLE:            
         Class.forName(OracleDriver);   
         break;   
      }   
      return DriverManager.getConnection(url, nome, senha);   
   } 
}

package util;

import java.sql.Connection;      
import java.sql.ResultSet;
import java.sql.SQLException;   
import java.sql.Statement;
import javax.swing.JOptionPane;

public class ConectaUsuario {
    private final String URL = "jdbc:oracle:thin:@HOST:1521:XE",
    NOME = "teste", SENHA = "teste";
    
    private Connection conexao = null;  
    private Statement comando = null;
    private ResultSet resultado = null;
    
    public boolean procuraLoginSenha(String login, String senha) {
        boolean aux = false;
        conectar();
        try {
            resultado = comando.executeQuery("SELECT * FROM USUARIO_USU WHERE USU_LOGIN = '" 
                    + login + "' AND USU_SENHA = '" + senha + "';");
            if (resultado.next())
                aux = true;
        } catch (SQLException e) {
            imprimeErro("Erro ao conectar usuário.", e.getMessage());
            aux = false;
        } finally {   
         fechar();
        }
        return aux;
    }
    private void conectar() {   
      try {   
         conexao = ConFactory.conexao(URL, NOME, SENHA, ConFactory.ORACLE);   
         comando = conexao.createStatement();
         System.out.println("Conectado!");
      } catch (ClassNotFoundException e) {   
         imprimeErro("Erro ao carregar o driver", e.getMessage());   
      } catch (SQLException e) {   
         imprimeErro("Erro ao conectar", e.getMessage());   
      }
   }
   private void fechar() {   
      try {   
         comando.close();   
         conexao.close();   
         System.out.println("Conexão Fechada");   
      } catch (SQLException e) {   
         imprimeErro("Erro ao fechar conexão", e.getMessage());   
      }   
   }   
   private void imprimeErro(String msg, String msgErro) {
      JOptionPane.showMessageDialog(null, msg, "Erro crítico", 0);
      System.err.println(msg);
      System.out.println(msgErro);
      System.exit(0);
   }
}

//o evento
    private void btnEntrarActionPerformed(java.awt.event.ActionEvent evt) {                                          
        if(edtSenha.getText().equals("") || edtUsuario.getText().equals(""))
        {
            JOptionPane.showMessageDialog(null, "Campo obrigaatório",
                    "Informação",JOptionPane.WARNING_MESSAGE);
            edtUsuario.requestFocus();
            edtUsuario.setText(null);
            edtSenha.setText(null);
        }
        else
        {
            UsuarioUsu usuarioUsu = new UsuarioUsu();
            ConectaUsuario conectaUsuario = new ConectaUsuario();
            if (conectaUsuario.procuraLoginSenha(edtUsuario.getText(), edtSenha.getText())) {
                JOptionPane.showMessageDialog(null, "conectou");
            } else {
                JOptionPane.showMessageDialog(null, "errou");
                edtUsuario.requestFocus();
                edtUsuario.setText(null);
                edtSenha.setText(null);
            }
        }

[EDITADO PELA MODERAÇÃO - Inclusão de tags code]

4 Respostas

A

coloca o erro ai, fica mais facil…

mausexdd

Por favor use a tag CODE muita gente pode deixar de analisar seu código .

package util; 

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

public class ConFactory { 

public static final int ORACLE = 0; 
private static final String OracleDriver = "oracle.jdbc.driver.OracleDriver"; 

public 
static Connection conexao(String url, String nome, String senha, 
int banco) throws ClassNotFoundException, SQLException { 
switch (banco) { 
case ORACLE: 
Class.forName(OracleDriver); 
break; 
} 
return DriverManager.getConnection(url, nome, senha); 
} 
} 

package util; 

import java.sql.Connection; 
import java.sql.ResultSet; 
import java.sql.SQLException; 
import java.sql.Statement; 
import javax.swing.JOptionPane; 

public class ConectaUsuario { 
private final String URL = "jdbc:oracle:thin:@HOST:1521:XE", 
NOME = "teste", SENHA = "teste"; 

private Connection conexao = null; 
private Statement comando = null; 
private ResultSet resultado = null; 

public boolean procuraLoginSenha(String login, String senha) { 
boolean aux = false; 
conectar(); 
try { 
resultado = comando.executeQuery("SELECT * FROM USUARIO_USU WHERE USU_LOGIN = '" 
+ login + "' AND USU_SENHA = '" + senha + "';"); 
if (resultado.next()) 
aux = true; 
} catch (SQLException e) { 
imprimeErro("Erro ao conectar usuário.", e.getMessage()); 
aux = false; 
} finally { 
fechar(); 
} 
return aux; 
} 
private void conectar() { 
try { 
conexao = ConFactory.conexao(URL, NOME, SENHA, ConFactory.ORACLE); 
comando = conexao.createStatement(); 
System.out.println("Conectado!"); 
} catch (ClassNotFoundException e) { 
imprimeErro("Erro ao carregar o driver", e.getMessage()); 
} catch (SQLException e) { 
imprimeErro("Erro ao conectar", e.getMessage()); 
} 
} 
private void fechar() { 
try { 
comando.close(); 
conexao.close(); 
System.out.println("Conexão Fechada"); 
} catch (SQLException e) { 
imprimeErro("Erro ao fechar conexão", e.getMessage()); 
} 
} 
private void imprimeErro(String msg, String msgErro) { 
JOptionPane.showMessageDialog(null, msg, "Erro crítico", 0); 
System.err.println(msg); 
System.out.println(msgErro); 
System.exit(0); 
} 
} 

//o evento 
private void btnEntrarActionPerformed(java.awt.event.ActionEvent evt) { 
if(edtSenha.getText().equals("") || edtUsuario.getText().equals("")) 
{ 
JOptionPane.showMessageDialog(null, "Campo obrigaatório", 
"Informação",JOptionPane.WARNING_MESSAGE); 
edtUsuario.requestFocus(); 
edtUsuario.setText(null); 
edtSenha.setText(null); 
} 
else 
{ 
UsuarioUsu usuarioUsu = new UsuarioUsu(); 
ConectaUsuario conectaUsuario = new ConectaUsuario(); 
if (conectaUsuario.procuraLoginSenha(edtUsuario.getText(), edtSenha.getText())) { 
JOptionPane.showMessageDialog(null, "conectou"); 
} else { 
JOptionPane.showMessageDialog(null, "errou"); 
edtUsuario.requestFocus(); 
edtUsuario.setText(null); 
edtSenha.setText(null); 
} 
}
ViniGodoy

Ao postar tópicos, por favor:

  1. Use a tag code para deixar seus códigos formatados. Você faz isso selecionando o código e pressionando o botão CODE, na janela de edição. Ou escrevendo
Seu código aqui
  1. Leia com atenção a descrição dos fóruns, e abra sua dúvida no fórum certo. Seu código é estritamente sobre uso de JDBC e Banco de Dados, então deveria ser aberto no fórum de persistência, não de Java Básico. É importante ler as regras do GUJ e a descrição dos fóruns, principalmente se você é iniciante por aqui.

  2. Poste apenas o trecho de código importante para sua dúvida, e a mensagem de erro que ele gera. No seu caso, isso será difícil pois você está fazendo try…catch engolir as exceptions e retirar o stack trace, que é a parte importante da informação do erro. Só mostrar a mensagem genérica na tela geralmente é pouco eficiente. Não boicote a si mesma, trate exceptions com carinho, não elimine suas informações. No mínimo, faça também um e.printStackTrace() após cada mensagem de erro, e veja que erro saiu no console.

ViniGodoy

Melhor mudar seu método imprimeErro para:

private void imprimeErro(String msg, Exception e) {  
      JOptionPane.showMessageDialog(this, msg, "Erro crítico", 0);  
      e.printStackTrace();
      System.exit(1);  
   }

E a forma de usa-lo fica até mais simples:

Dessa forma você terá informações mais precisas quando seu programa abortar.

Note que alterei o primeiro parâmetro do JOptionPane de null para this. Conforme a documentação do JOptionPane explica, o primeiro parâmetro deve conter a janela que está abrindo o optionpane. Como vc está rodando o código através da janela ConectaUsuario, esse valor deverá ser this. JOptionPane com o primeiro parâmetro nulo só é usado em aplicações console (aquelas do início da faculdade, quando vc escrevia tudo dentro do main).

Criado 18 de setembro de 2011
Ultima resposta 18 de set. de 2011
Respostas 4
Participantes 4