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 = ?");
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.
Victor_Neves
se do jeito que o tchello falou por acaso nao funcionar, tente colocar aspas simples com os porcents… assim:
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
rodrigo.bossini
O intuito do PreparedStatement, CallableStatement etc é (dentre outros) justamente evitar o uso de aspas na concatenação de strings.
Thiago_Kverna
[quote=Tchello]
Der Meister:
se do jeito que o tchello falou por acaso nao funcionar, tente colocar aspas simples com os porcents… assim:
É, não precisa disso mesmo não… vc ta usando MySQL né… no MySQL eu tenho certeza que funciona…
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.
Tchello
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!
Gabriel_Tom
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.