SQL com like

Bom dia a todos,

Estou querendo fazer uma sql utilizando LIKE no SQLite. Exemplo:

select * from cliente where nome like…< aqui não sei como fica, “%”, “?” > não sei a sintaxe.

Obrigado

Fred

Este select lista todos os clientes com o primeiro nome ‘Guilherme’, indepentente do Sobrenome e etc…

SELECT * FROM cliente WHERE nome LIKE 'Guilherme%'

é para o SQLite e Android, não tem uma estrutura assim:

cursor = bancoDados.query("clientes", new String [] {"nome","endereco","telefone"}, null,//selection, null,//selectionArgs, null,//groupBy, null,//having, null);//"order by nome"//orderBy)

String pattern = "%" + nome + "%";
cursor = bancoDados.query("clientes",
                    new String [] {"nome","endereco","telefone"},
                    "nome like ?",//selection,
                    new String[]{pattern},//selectionArgs,
                    null,//groupBy,
                    null,//having,
                    null);//"order by nome"//orderBy) 

Como mostraria o resultado acima numa lista?

Nesse código acima, ele seria como: select * from cliente where nome like. Correto?

Obrigado pela resposta. E como ficaria uma sql com mais de uma tabela? Por exemplo, quero saber o fornecedor do produto x

Fornecedor: Codigo_For e Nome

Produto: Codigo_Prod, Nome e Codigo_For

Opa. O código gerado vai ser o seguinte:

select nome, endereco, telefone from clientes where nome like %AlgumNome%;

Essas classes não tem mágica nenhuma, se você quiser pode usar o método rawQuery e passar o sql direto. Pra consultas mais complexas pode ser até melhor.

O componente de lista é o ListView. Você usa adapters pra popular ele. O modo mais simples de popular os dados da sua busca no seu ListView, neste caso, é usar o SimpleCursorAdapter. Ele recebe um cursor (que você já tem), um layout que representa cada linha que será exibida e mais dois atributos que indicam o mapeamento das colunas do cursor para a lista. Um exemplo simples usando um layout pronto (vai exibir a lista com o nome):

//...
onCreate(...) {
   //inicializacao da activity...

   String pattern = "%" + nome + "%";
   cursor = bancoDados.query("clientes",
                    new String [] {"nome","endereco","telefone"},
                    "nome like ?",//selection,
                    new String[]{pattern},//selectionArgs,
                    null,//groupBy,
                    null,//having,
                    null);//"order by nome"//orderBy) 

   adapter = new SimpleCursorAdapter(this, android.R.layout.simple_list_item_1, "nome", android.R.id.text1);
   setListAdapter(adapter);
}

Se a tela que você está criando for majoritariamente uma lista, use um ListActivity ao invés de Activity.

Abraço.

Poderia dar um exemplo com esse rawQuery? E como faria esse ListActivity?

String[] selectionArgs = {"%" + nome + "%"};
cursor = bancoDados.rawQuery("select nome, endereco, telefone from clientes where nome like ?", selectionArgs);
// a configuracao do adapter permanece igual

ListActivity é uma subclasse de Activity que apresenta algumas facilidades pra se trabalhar com ListView. Ao invés de herdar de Activity, herde de ListActivity, aí você pode usar métodos como getListView() e setListAdapter() diretamente.

Falou.

Ok, mas poderia exemplificar isso:

“ListActivity é uma subclasse de Activity que apresenta algumas facilidades pra se trabalhar com ListView. Ao invés de herdar de Activity, herde de ListActivity, aí você pode usar métodos como getListView() e setListAdapter() diretamente.”

Ajudaria muito com exemplo. O que eu quero fazer é uma campo para consulta e retornar numa lista. Uma tela com botão para chamar outra tela da consulta.

Obrigado pelos retornos.

Poderia me ajudar nessa ListActivity?

Já pensou na possibilidade de usar um ORM, tipo o AndOrm? :wink:

Como? Não entendi isso. ORM???

http://jonatasdaniel.wordpress.com/2011/07/08/andorm-framework-orm-para-android/

O que precisa para usar isso? Onde crio o banco? Preciso de duas tabelas. Clientes, Veículos e Serviços. Clientes com: Nome, Celular e Telefone. Veículos com: Id_Cliente, Veiculo, Placa e Tipo. Serviços com: Descrição e Valor. Preciso ligar Clientes com Veículos, ou seja, pesquisar por placa e trazer os veículos de um determinado cliente.

wagnerfrancisco

Estou querendo montar uma lista com o resultado da consulta e mostrar o selecionado. Esse seu código:

[code] //…
onCreate(…) {
//inicializacao da activity…

   String pattern = "%" + nome + "%";  
   cursor = bancoDados.query("clientes",  
                    new String [] {"nome","endereco","telefone"},  
                    "nome like ?",//selection,  
                    new String[]{pattern},//selectionArgs,  
                    null,//groupBy,  
                    null,//having,  
                    null);//"order by nome"//orderBy)   
  
   adapter = new SimpleCursorAdapter(this, android.R.layout.simple_list_item_1, "nome", android.R.id.text1);  
   setListAdapter(adapter);  
}  [/code]

Ele mostra na lista? Como faria essa ListActivity? Pode me ajudar?