Então vc pode usar um metodo para analisar se a string A está contida na string B… Mas eu não lembro o nome do metodo… dá uma olhadinha no google um metodo em java para pesquisar substrings…
[quote=KassiPretti]malsan tem razão, seria melhor em vez de vc trazer todos os registros do banco fazer logo o filtro dos q vc deseja usar… é mais prático e rapido
=)[/quote]
com certeza seria a melhor forma…
mas ainda não tive a cadeira de Banco de Dados em minha facul… e não tenho nem noção de como fazer isso…
o nosso profeessor de programção mostrou algumas coisas básicas só para a gente salvar e buscar os valores…
o resto do processo… deve ser feito dentro do programa mesmo… como o de busca… comparação. .etc
O ResulSet é uma coleção que irá add os valores encontrador na pesquisa.
Seria algo mais ou menos assim, supondo que você já está conectado ao banco de dados, e qu eo nome da sua comexão é connection.
/**Cria o Statement para executar os comandos SQL*/
Statement st = connection.createStatement();
/**Cria a variável que irá armazenar a String Consulta*/
String query = "SELECT Nome FROM Tabela WHERE Nome LIKE '%PEDRO%'"
/**
a. Cria o ResultSet para armazenar os dados da pesquisa
b. Executa a pesquisa, armazenando os valores no ResultSet.
*/
ResultSet rs = st.executeQuery(query);
/**Cria a variável que irá contar o número de registros Pedro dentro da pesquisa*/
int count = 0;
/**
Navega no ResulSet.
Enquando tiverem registros (next()), ele vai incrementar o count.
*/
while (rs.netx())
count++
/**Exibe a quantidade de registros encontrados.*/
System.out.println("Qtde de Usuários que contêm o nome 'Pedro': " + count);
Vc pode também utilizar as interfaces Iterator e Collection para navegar e manipular os dados encontrados.
Dpa uma pesquisada no javadoc sobre: ResultSet, Collection, Iterator.
Morte aos professores universitários sem noção!!!
Tenta usar o método indexOf(String s), que retorna a posição dum substring no string de onde é invocado. o método toLowerCase() também pode ajudar.
Assim:
for(String name : names){
if(name.toLowerCase().indexof(criterionName.toLowerCase()) >= 0){
found.add(name);
}
}
onde: names = lista de nomes que veio do banco, criterionName = nome a procurar e found = lista de nomes coincidentes!
E vê se estuda SQL depois desta!!!
Aquele abraço!!!
San
Você pode ter problemas se os nomes guardados no banco tiverem uma mistura de maiúsculas e minúsculas. Essas pesquisas com string geralmente são sensíveis à caixa do texto.
Alguns bancos tem funcões como o uppercase, e dá pra usar com “uppercase(nome) like ?”, que vai colocar o registros em caixa alta, daí é só passar um valor em maiúsculas.
Outros bancos dá pra colocar o modo de pesquisa de string em case insensitive, que ignora a caixa. Há opções também de accent insensitive, que ignora os acentos, onde A. a, á, ã, â são todos os mesmos caracteres.
Como foi dito, teste no seu programa o metodo indexOf()
Caso a string existir, ele ira retornar o valor da posição onde começa essa string. Caso nao existir, ira ser retornado um erro, que no caso é -1. Dai voce ve o que voce faz…
Nao lembro se diferencia maiuscula de minuscula, mas caso diferenciar, voce pode usar o metodo toUpperCase para o valor do db e na hora de pesquisa usar o mesmo metodo para passar o valor da pesquisa no mesmo tipo de letra, que no caso é maiuscula, assim tem menos chances de dar erro…
Realmente, vc pode ter alguns problemas com a caixa do texto.
Porém, neste caso específico, onde a pesquisa é por nome próprio, parto do princípio de que todo nome prórpio começa com letra maísucla.
então, vc teria que mudar a string query:
String query = "SELECT Nome FROM Tabela WHERE Nome LIKE '%Pedro%'"
Porém, se o valor da busca for repassado de algum lugar, o melhor seria encapsular numa variável e utilizar o jogo de toLowerCase() e toUpperCase() para fazer a pesquisa de todos os itens.
Então, eu alteraria:
/**Cria o Statement para executar os comandos SQL*/
Statement st = connection.createStatement();
/**Encapsular a palacha-chave - String keyWord = (lugar de origem);
nesse caso, vou assumir que o cara digitou a palavra 'Pedro' */
String keyWord = "Pedro";
/**Cria a variável que irá armazenar a String Consulta
irá fazer a consulta utilizando as opções:
1. como usuário digitou (keyWord)
2. convertendo para caixa alta (keyWord.toUpperCase())
3. convertendo para caixa baixa (keyWord.toLowerCase())
*/
String query = "SELECT Nome FROM Tabela WHERE Nome LIKE '%" + keyWord
+ "%' OR '%" + keyWord.toUpperCase()
+ "%' OR '%" + keyWord.toLowerCase()
+ "%'");
Você está sendo inocente. Se você partir desse principio, também tem que acreditar que o nome foi digitado corretamente pelo usuário, que o sistema tenha guardado na base o nome certinho, que você tenha controle exclusivo e total sobre esses dados, que todos os dados colocados lá antes do teu sistema aparecer estejam perfeitos, e pior, que todos os nomes próprios realmente comecem com maiúsculas.
Realmente, eu estaria sendo inocente.
Porém, eu tenho a mania de acreditar nas pessoas.
Mas, também, pensando que o cara pode digitar diferente, que eu coloquei a 2ª opção.
Mas não quero abrir nenhuma discussão sobre esse assunto…
O ResulSet é uma coleção que irá add os valores encontrador na pesquisa.
Seria algo mais ou menos assim, supondo que você já está conectado ao banco de dados, e qu eo nome da sua comexão é connection.
/**Cria o Statement para executar os comandos SQL*/
Statement st = connection.createStatement();
/**Cria a variável que irá armazenar a String Consulta*/
String query = "SELECT Nome FROM Tabela WHERE Nome LIKE '%PEDRO%'"
/**
a. Cria o ResultSet para armazenar os dados da pesquisa
b. Executa a pesquisa, armazenando os valores no ResultSet.
*/
ResultSet rs = st.executeQuery(query);
/**Cria a variável que irá contar o número de registros Pedro dentro da pesquisa*/
int count = 0;
/**
Navega no ResulSet.
Enquando tiverem registros (next()), ele vai incrementar o count.
*/
while (rs.netx())
count++
/**Exibe a quantidade de registros encontrados.*/
System.out.println("Qtde de Usuários que contêm o nome 'Pedro': " + count);
Vc pode também utilizar as interfaces Iterator e Collection para navegar e manipular os dados encontrados.
Dpa uma pesquisada no javadoc sobre: ResultSet, Collection, Iterator.
Espero ter ajudado
Qaulquer coisa, posta.
Abraços[/quote]
usei esse códigos que vc me passou…
funcionou perfeitamente…
só mudei algumas coisasinhas de acordo ao meu programa…
[code]String nomeTEMP=campoNOME.getText();
if(nomeTEMP.equals("")){
JOptionPane.showMessageDialog(null,“Por favor digite um nome válido.”);
}else{
String query = "SELECT * FROM dadosconta WHERE Nome LIKE '%"+nomeTEMP+"%'";
boolean achado=false;
try{
ResultSet rec = st.executeQuery(query);
while(rec.next()){
achado=true;
Tabela.addRow(new Object[] {rec.getString("conta"), rec.getString("nome"), rec.getString("cpf"), rec.getString("endereco"), rec.getString("cidade"), rec.getString("telefone"), rec.getString("saldo"), rec.getString("data")});
}
}catch(SQLException s){
System.out.println("sql erro:"+s.toString());
}[/code]