Fala galera, estou tentanto listar todos os nomes de uma tabela que eu digite certa sequencia de caracteres. Por exemplo?: quando eu digitar no meu txtNome “ana”, quero que apareça na minha jtable todos nomes que tenham “ana” no campo nome do bd.
Nesse código está listando somente “ana”.
bancoDados.Comando = bancoDados.Conexao.prepareStatement("select * from cadcliente WHERE nome = ? or cpf = ?");
bancoDados.Comando.setString(1, txtNome.getText());
já tentei usar esse comando aqui e dá erro.
bancoDados.Comando = bancoDados.Conexao.prepareStatement("select * from cadcliente WHERE nome like '%?%' or cpf = ?");
Vlw galera!
Opa, tente dessa maneira:
1. bancoDados.Comando = bancoDados.Conexao.prepareStatement("select * from cadcliente WHERE nome = ? or cpf = ?");
2. bancoDados.Comando.setString(1, "%"+txtNome.getText()+"%");
Desse modo deve funcionar.
Abraços.
se do jeito que o tchello falou por acaso nao funcionar, tente colocar aspas simples com os porcents… assim:
bancoDados.Comando.setString(1, " '%"+txtNome.getText()+"%' ");
[quote=Der Meister]se do jeito que o tchello falou por acaso nao funcionar, tente colocar aspas simples com os porcents… assim:
bancoDados.Comando.setString(1, " '%"+txtNome.getText()+"%' ");
Cara, acho que não precisa disso nao…
sera que nao depende entao do banco?! oO
eu me lembro de usar assim pra SQL SERVER 2000 la no trabalho!
bom, vamos deixar o cara entao testar a aplicaçao, mas o mais importante acho que ja dissemos a ele, os porcents sao postos no setString, nao na query! =D
O intuito do PreparedStatement, CallableStatement etc é (dentre outros) justamente evitar o uso de aspas na concatenação de strings.
[quote=Tchello][quote=Der Meister]se do jeito que o tchello falou por acaso nao funcionar, tente colocar aspas simples com os porcents… assim:
bancoDados.Comando.setString(1, " '%"+txtNome.getText()+"%' ");
Cara, acho que não precisa disso nao…[/quote]
É, não precisa disso mesmo não… vc ta usando MySQL né… no MySQL eu tenho certeza que funciona…
Eu dou cursos de extensão em JAVA e passei pro pessoal o PreparedStatement justamente pra não precisar desse monte de aspas…
Se eu não me engano vc foi aluno meu…
Só tem que tomar cuidado se houver a possibilidade da pessoa não digitar nada…
eu acho q quando passa “%%” pro like ele num funciona…
Falows
[quote=Thiago_Kverna][quote=Tchello][quote=Der Meister]se do jeito que o tchello falou por acaso nao funcionar, tente colocar aspas simples com os porcents… assim:
bancoDados.Comando.setString(1, " '%"+txtNome.getText()+"%' ");
Cara, acho que não precisa disso nao…[/quote]
É, não precisa disso mesmo não… vc ta usando MySQL né… no MySQL eu tenho certeza que funciona…
[/quote]
Uso Postgres e Oracle, em ambos o comportamento de um ps é o descrito acima(sem as aspas).
Cara, fui não.
Mas vale ressaltar que o uso de PreparedStaments provê muito além de que simplesmente não ter que por as aspas, evita concatenção nojenta de strings, aprimora a segurança (ajudando a evitar sql injections), melhora a legibilidade do código, etc.
Tava esquecendo, mas kavera tem como reduzir o tamanho do seu avatar? Ele ta ocupando quase 1/3 da tela e isso ta deixando a leitura um pouco desconfortável.
vlw cara!
Thiago, fui seu aluno sim, hehe! Muito bom por sinal.
Só lembrando que o código abaixo não tem o LIKE, tem que colocar no lugar do “=” pra funfar.
bancoDados.Comando = bancoDados.Conexao.prepareStatement("select * from cadcliente WHERE nome = ? or cpf = ?");
bancoDados.Comando.setString(1, "%"+txtNome.getText()+"%");
O problema agora é quando vou bscar somente pelo cpf , qndo o txtNome ta em branco lista todos os clientes.
Vlw galera!