Problemas com busca usando Netbeans 6.5 e Access 2007

galera, to tentando faze uma coisa simples… uma consulta ao banco…
to usando o netbeans 6.5 com Access 2007…
a kestão é a seguinte… se eu passo a string como query=“SELECT * FROM Cliente WHERE cdCliente = 10” , por exemplo, ele axa normal… blzinha…
so q eu kero q a filtragem seja feita qdo for apertada uma tecla… se eu passo o codigo direto, da forma q eu disse, ele axa…
agora se eu dexo query="SELECT * FROM Cliente WHERE cdCliente = "+codigo; dá erro de sintaxe no banco… na maioria das vezes diz q é na clausula WHERE…to puto da vida, pq nao consigo enxerga o erro nisso…
nunca tive problema como esse num outro programinha q eu fiz… sempre passei o codigo como parametro e nao deu erro… mas era otro netbeans e otro banco, o my sql… agora é o access…
um amigo meu ta usando o sql server e deu certo esse codigo… funfa certinho… eu praticamente to usando o mesmo codigo, mudando apenas as variaveis e o nome dos metodos…
eu q vi funciona, mas apenas qdo eu coloco o valor do codigo dentro da string pra armazena na query… de qq outro jeito, da erro… ja colokei espaço antes do =, depois, aspas simples pra ca e pra la… apesar de ser intero, como nao ta dando certo, tentei isso tb…
mas enfim, nada deu certo…
to começando a axa q é o proprio access q nao aceita…
=/
se alguem tive alguma ideia do q ta acontecendo… me fala… abaixo ta o codigo…

[code]public void filtrarCliente(){

//esse metodo pega os valores digitados num dos campos… se codigo for vazio, ele pega o nome…mas o código é oq importa agora
String tabCodigo= text_tabCodigo.getText();
String tabNome=text_tabNome.getText();
// String tabApelido=text_tabApelido.getText().toUpperCase();

        String query="SELECT * FROM Cliente WHERE  ";
                  
     
        if(!tabCodigo.equals(""))
        {
         
            query+="cdCliente = "+tabCodigo;
        }
        else{
            if(!tabNome.equals(""))
            {
                query+=" Nome LIKE = '"+tabNome+"'";
            }
        }


        //alguem ve algum erro de sintaxe??
        filtragem(query);
}

public void filtragem(String query){

//aki é so a consulta normal ao banco… aki é sem problemas…
try{

             conn.Conecta();

             int qtd=tabelaPadrao.getColumnCount();

              while(qtd!=0){

                  tabelaPadrao.removeRow(0);
                  qtd=tabelaPadrao.getRowCount();

                
             }

             res=conn.Consulta(query);

             while(res.next()){

                 int cod=res.getInt("cdCliente");
                 String tabStatus=res.getString("Status");
                 String tabNome=res.getString("Nome");
                 String tabApelido=res.getString("Apelido");
                 String tabRua=res.getString("Rua");
                 String tabNumero=res.getString("Numero");
                 String tabCep=res.getString("Cep");
                 String tabBairro=res.getString("Bairro");
                 String tabCidade=res.getString("Cidade");
                 String tabEstado=res.getString("Estado");
                 String tabTelefone=res.getString("Telefone");
                 String tabCelular=res.getString("Celular");
                 String tabCpf=res.getString("CPF");
                 String tabCnpj=res.getString("CNPJ");
                 String tabDtNascimento=res.getString("Data de Nascimento");
                 String tabDtCadastro=res.getString("Data de Cadastro");
                 String tabTipoPessoa=res.getString("Tipo Pessoa");
                 
                 String tabCodigo=""+cod;

                 String linha[]={tabCodigo,tabStatus,tabNome,tabApelido,tabRua+
                         " "+tabNumero,tabCep,tabBairro,tabCidade,
                         tabEstado,tabTelefone,tabCelular,tabTipoPessoa,
                         tabCpf,tabCnpj,tabDtNascimento,tabDtCadastro
                                 };
                 tabelaPadrao.addRow(linha);


             }

             conn.Fecha();


        }catch (SQLException ex) {
            Logger.getLogger(TabelaCliente.class.getName()).log(Level.SEVERE, null, ex);
            JOptionPane.showMessageDialog(this,"Erro Comando SQL "+ex.getMessage());
         }



}

//aki eu xamo o metodo de filtragem sempre q alguma tecla é digitada…mas aki tb nao tem problema aparentemente…
private void text_tabCodigoKeyTyped(java.awt.event.KeyEvent evt) {
filtrarCliente();
}

[/code]

se alguem nao entende alguma coisa… me fala ae…
vlw galera…

  1. Imprimir o resultado da query, ou seja, depois da filtragem, coloque a sql motada no seu bd e mande rodar para ver o resultado e assim vc vai descobrir qual o erro na sintaxe.

  2. Vc pode usar a interface PreparedStatement para evitar concatenar string direto com a sql.

  3. ou tbm poderia tentar fazer algo assim usando a classe StringBuffer:

StringBuffer query= new StringBuffer("SELECT * FROM Cliente WHERE ");
		if(!tabCodigo.equals("")){
			query.append("cdCliente = ");
			query.append(tabCodigo);
		}
		 else{ 
             if(!tabNome.equals(""))  
             {  
            	 query.append(" Nome LIKE '%");
            	 query.append(tabNome);
            	 query.append("'%");
             }  
         }          
 String query="SELECT * FROM Cliente WHERE  ";  
                         
             if(!tabCodigo.equals(""))  
             {  
                
                 query+="cdCliente = "+tabCodigo;  
             }  
             else{  
                 if(!tabNome.equals(""))  
                 {  
                     query+=" Nome LIKE = '"+tabNome+"'";  
                 }  
             }  

e se tabCodigo e tabNome estiverem como “” (String vazia)? A String para consulta seria "SELECT * FROM Cliente WHERE " o que deveria ocorrer erro. Faça um debug e verifique…

 int qtd=tabelaPadrao.getColumnCount();  
   
                   while(qtd!=0){  
   
                       tabelaPadrao.removeRow(0);  
                       qtd=tabelaPadrao.getRowCount();  
   
                       
                  }  

Neste trecho primeiro qtd obtem a quantidade de colunas e depois dentro do loop a quantidade de linhas… está correto?

po galera… vlw msm pela resposta rapida…
luizlcfc vlw pela dica cara… oq vc falou sobre no primero trecho pega a qtde de colunas e depois a de linhas tava certo…
eu trokei as bolas aki… mas msm eu tendo feito errado isso, nao afetou em nada… axo q por causa do loop msm… o indice a ser apagado por ele era fixo, entao ele fazia de boa msm errado…
ja trokei…

oq tava errado galera era o seguinte: o metodo de filtragem tava sendo xamado qdo uma tecla era pressionada, mas parece q nao tava dando tempo de pegar o valor digitado…
eu trokei o metodo de keytiped pra keyreleased e funciono pro campo codigo…
agora vo faze pros otros campos…

vlw msm galera!!
abraços