Comparar dados da jTextField com B.D

9 respostas
S

Bom dia pessol!

Ja virei de ponta-cabeça e não consegui … alguem tem uma idéia?

Como faço para comparar os dados que o Usuário digitou numa jTextField, com os dados que estão no B.D, Verificar se o CPF do novo cliente ja existe no B.D. Estou usando o NetBeans 6.1 B.D Access

Aonde que eu comparo? dentro do Botão salvar?

Segue meu codigo de salvar:

public void incluir(){
           try
        {
                    String sqlinsert="INSERT into Cliente " + "(nomeClie,enderecoClie," +
                    "numeroClie,complementoClie,bairroClie,propriedadeClie,cidadeClie," +
                    "cepClie,ufClie,foneClie,rgClie,cpfClie,emailClie," +
                    "dataNascClie,pessoaClie,situacaoClie,dataCadClie,obsClie) values ('"+                                 
                    tf_nome.getText()+"','"+
                    tf_endereco.getText()+"',"+
                    tf_numero.getText()+",'"+
                    tf_complemento.getText()+"','"+
                    tf_bairro.getText()+"','" +
                    tf_propriedade.getText()+"','"+
                    tf_cidade.getText()+"','"+
                    tf_cep.getText()+"','"+
                    tf_uf.getText() +"','"+
                    tf_fone.getText()+"','"+
                    tf_rg.getText()+"','"+
                    tf_cpf.getText()+"','"+
                    tf_email.getText()+"',#"+
                    tf_data_nasc.getText()+"#,'"+
                    pessoa+"','"+
                    situacao+"',#"+
                    tf_data_cad.getText()+"#,'"+
                    tf_obs.getText()+"')"; 

                    System.out.println("sql: " + sqlinsert); 
            
                    
                    //if  (String cpf = "select * from Cliente Where cpfClie ="+tf_cod_venda.getText();
                  //   if ((tf_cpf.getText()).equals(String cpf = "select * from Cliente cpfClie"));
                    
           CON_CLIENTE.statement.executeUpdate(sqlinsert);          
            JOptionPane.showMessageDialog(null,"Gravação realizada com sucesso");           
            //Atualiza o resultado
           CON_CLIENTE.resultset = CON_CLIENTE.statement.executeQuery("select * from Cliente order by " + ordenacao);
           CON_CLIENTE.executeSQL("select * from Cliente order by " + ordenacao); 
           CON_CLIENTE.resultset.next();
            mostrarDados();
            preencherJtable();
            atualizaComboxPesquisa();
          
        }
        
        catch(SQLException erro) 
        {
            erro.printStackTrace();
           JOptionPane.showMessageDialog(null,"Erro ao tentar Salvar o registro: " + erro);   
        }

9 Respostas

juliano_FRG

Você pode criar um método que contém uma instrução SQL, que recebe como parâmetro o novo CPF e te retorna ‘true’ ou ‘false’ se o CPF já existir. Aí, antes de realizar a inserção testa o CPF com o método.

S

Fiz esse pobre e humilde codigozinho…
Mas não funcionou

public void verificarCpf()
       {
           try
           {
               String cpf = tf_cpf.getText();         
                
               if(cpf.equals(CON_CLIENTE.resultset.getString("Select cpfClie from Cliente")))
               {
                   
                   JOptionPane.showMessageDialog(null,"Cliente já cadastrado, \n Verificar se o CPF esta sendo digitado corretamente! " + cpf);
               }
               else
               {
                   JOptionPane.showMessageDialog(null,"Cliente habilitado a ser cadastrado ");
               }

Seria algo desse tipo?

S

Como declaro o método para ser Boolean?
Desculpe mas eu nunca fiz um método boolean…

public void verificarCpf(boolean) {...

juliano_FRG
public boolean verificarCpf(String CPF)   
{
     
}
S

Agora se caso for vendade, o cpf ja existe, para declara que o método é false???

Ai eu chamo esse método no botão salvar, e se o método for true eu chamo mo método Incluir… É essa a idéia???

Onde esta comentado esta com erro:

public  boolean verificarCpf(String cpf)
       {
           try
           {
               cpf = tf_cpf.getText();         
               JOptionPane.showMessageDialog(null,"nº cpf" + cpf); 
               
               if(cpf.equals(CON_CLIENTE.resultset.getString("Select cpfClie from Cliente")))
               {
   
//Como faço para dizer que o resultado do método é false ou true???? verificarCpf(cpf = false);

                   JOptionPane.showMessageDialog(null,CON_CLIENTE.resultset.getString("cpfClie")); 
                   JOptionPane.showMessageDialog(null,"Cliente já cadastrado, \n Verificar se o CPF esta sendo digitado corretamente! " + cpf);
               }
               else
               {
                   JOptionPane.showMessageDialog(null,"Cliente habilitado a ser cadastrado ");
               }

           }
           catch(Exception erro){
               JOptionPane.showMessageDialog(null,"O método de verificar CPF não funcionou");
           }
}
S

Fiz assim não sei se está certo…

public  boolean verificarCpf(String cpf)
       {
           try
           {
               cpf = tf_cpf.getText();         
               JOptionPane.showMessageDialog(null,"nº cpf" + cpf); 
               
               if(cpf.equals(CON_CLIENTE.resultset.getString("Select cpfClie from Cliente")))
               {
                   
                   return false;
  
                   JOptionPane.showMessageDialog(null,CON_CLIENTE.resultset.getString("cpfClie")); 
                 
                   JOptionPane.showMessageDialog(null,"Cliente já cadastrado, \n Verificar se o CPF esta sendo digitado corretamente! " + cpf);
               }
               else
               {
                   JOptionPane.showMessageDialog(null,"Cliente habilitado a ser cadastrado ");
               }

           }
           catch(Exception erro){
               JOptionPane.showMessageDialog(null,"O método de verificar CPF não funcionou");
           }

agora no botão salvar… como que comparo, está dando erro…

private void salvarActionPerformed(java.awt.event.ActionEvent evt) {                                       
        if (verificarCpf(String cpf = true)){ // erro aqui não sei declarar... como que vejo se o método é verdadeiro ou falso???
            incluir();
        }
S

Nada da certo…

private void salvarActionPerformed(java.awt.event.ActionEvent evt) {                                       
        if (verificarCpf(return.equals(true))){
            incluir();
        }
juliano_FRG
public boolean verificarCpf(String cpf)   
	{   
		try   
		{
			//Cria sua conexão
			Connection con = DriverManager.getConnection(StringURL, StringUser, StringPass);

			//Cria sua instrução sql com um parâmetro
			PreparedStatement st = con.prepareStatement("Select cpfClie from Cliente where cpfClie = ?");

			//Seta o  prâmetro com o valor do CPF
			st.setString(1, cpf);

			//Cria seu resultset que recebe o resultado da busca
			ResultSet rs = st.executeQuery();

			//verifica se encontrou algum resultado
			if(rs != null)   
			{   
				return true;
			}

			//Se não encontrar o CPF no banco retorna false, se encontrar retorna true.
			return false;
		}
		catch(SQLException ex)
		{
			throw new SQLException();
		}
	}
S

To tentando mexer aqui mas tem uma coisa que não entendi, é essa parte da conexão …

Eu tenho a seguinte classe de conexão :

package utilitarios;
import java.sql.*;
import javax.swing.*;

public class Conectar{

    public static void close() {
        throw new UnsupportedOperationException("Not yet implemented");
    }
    
        final private String driver = "sun.jdbc.odbc.JdbcOdbcDriver";
        final private String url = "jdbc:odbc:SIC";
        final private String usuario = "";
        final private String senha ="";
        private Connection conect;
        public Statement st;
        public ResultSet rs;
                
        public boolean connect (){
            boolean result = true;
                try {
                        Class.forName(driver);
                        conect = DriverManager.getConnection(url, usuario, senha);
                        //JOptionPane.showMessageDialog(null, "conectou");
                    }
                
            catch(ClassNotFoundException Driver)
                    {
                JOptionPane.showMessageDialog(null,"Driver não localizado" + Driver);
                result = false;
                     }
            
            catch(SQLException Fonte)
                    {
                JOptionPane.showMessageDialog(null, "Deu erro na conexão, " +
                        "com a Fonte de Dados, erro: " + Fonte);
                result = false;
                     }
                     return result;
                }

        
        
        //Método usado para desconetar
        public void desconeta()
        {
            boolean result = true;
            try
             {
                    conect.close();
                    JOptionPane.showMessageDialog(null,"Banco de Dados Fechado");
             }
            
            catch(SQLException fecha)
            {
                JOptionPane.showMessageDialog(null,"Não foi possivel, "+
                        " fechar o Banco de Dados, erro: " + fecha);
            }
        }
        
        
        //Métodos de Conectar(conexão)  
        public void executeSQL(String sql)
        {
            try
            {
               st = conect.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
                rs = st.executeQuery(sql);
            }
            catch(SQLException sqlex)
            {
                JOptionPane.showMessageDialog(null,"Não foi possivel execultar o comando sql - Class Conectar: "+
                        ", "+sqlex+" O sql passado foi: "+sql);
            
            }
}

}

Na minha classe clientes eu declaro assim no começo dela:

public class CadCliente extends javax.swing.JFrame {
    
      
    Conectar CON_CLIENTE;
    int inicia_combo=0;
    String ordenacao="nomeClie",pessoa="F",situacao="A";    
    
    
    /** Creates new form CadCliente */
    public CadCliente() {
      
        
        CON_CLIENTE = new Conectar();//Inicializa a conexão
        CON_CLIENTE.connect();//Chama o método conecta     
        CON_CLIENTE.executeSQL("select * from Cliente order by " + ordenacao);//executa a conexão com BD
        
        try
        {
            while(CON_CLIENTE.rs.next())
                cb_pesquisa.addItem(CON_CLIENTE.rs.getString("nomeClie"));            
                CON_CLIENTE.rs.first();
                mostrarDados();         
        }

        catch(SQLException erro)
        {
            JOptionPane.showMessageDialog(null,"Não localizou dados "+erro);
        }  
        preencherJtable();//chama método preencher jtable   
   
   
    }

Como que utilizo seu codigo, implementando essa conexão que ja tenho??? como que ficaria?

Se puderem me ajudar, agradeço desde já!

Criado 19 de novembro de 2008
Ultima resposta 19 de nov. de 2008
Respostas 9
Participantes 2