Estudo, porque? Estou com uma dúvida: Como poderia mostrar os horários cadastrados?
Recomendo que vc abstraia esse acesso ao seu banco utilizando algum DAO , ai fica mais fácil de dar manutenção no seu código.
Como faria isso? E como mostraria os horários cadastrados na própria tela de cadastro? Horários por exemplo, que é o que estou fazendo no momento. Poderia me ajudar a montar esse DAO?
Teria algum exemplo para me mandar com DAO para que possa adaptar?
Como mudar esse meu para DAO? Poderia me ajudar?
Não teria como mandar um exemplo ou tentar adaptar esse meu para DAO? Como fazer nesse caso que tem várias tabelas?
Cara, lê o que eu te passei que você consegue. No caso de várias tabelas você vai criar um DAO para cada tabela que você tem no banco, e ai vc define os métodos dentro do DAO para criar, ler,alterar e excluir. É só adaptar o CommentsDataSource do exemplo para sua situação.
To dando uma lida no artigo, mas to meio perdido, nunca usei DAO, entendeu? Queria uma ajuda de como começar isso ai. To lendo mas não to entendendo direito.
Do jeito que fiz está errado? To vendo no artigo que alguma coisa parece com que fiz.
Segue o exemplo que vai dar certo, dá pra perceber que vc não deve vir do mundo java, não conhecer o pattern DAO chega a ser estranho.
Eu conheço o DAO, só nunca usei, entendeu? Percebo que no artigo tem parte que fiz igual.
Antes de fazer no seu projeto tenta então refazer o projeto do exemplo,ai você adapta depois para o seu projeto, é simples demais.
Teria que fazer um DAO para Clientes, um DAO para Carros, um DAO para Tipo_Carro, um DAO para Servicos, um DAO para Horarios e outro DAO para OS?
Isso.
Então, me ajuda a montar um DAO para Clientes, o resto eu faço igual.
Depois eu vejo isso pra vc.
é complicado isso?
Não.
Vamos fazer juntos para tabela Clientes pra eu aprender, ai sigo o que fiz e faço as demais.
public class ClienteDao {
private DbAdapter dbAdapter;
private SQLiteDatabase mDb;
public ClienteDao(Context context){
this.dbAdapter = new DbAdapter(context);
}
public long gravarCliente(String nome, String endereco, String telefone, String celular, String email){
dbAdapter.open();
ContentValues valores = new ContentValues();
valores.put(KEY_NOME, nome);
valores.put(KEY_ENDERECO, endereco);
valores.put(KEY_TELEFONE, telefone);
valores.put(KEY_CELULAR, celular);
valores.put(KEY_EMAIL, email);
Long id = mDb.insert(DATABASE_TABLE_CLIENTES, null, valores);
dbAdapter.close();
return id;
}
// ALTERAR CLIENTE
public boolean atualizarCliente(long Id, String nome, String endereco, String telefone, String celular, String email){
dbAdapter.open();
ContentValues valores = new ContentValues();
valores.put(KEY_NOME, nome);
valores.put(KEY_ENDERECO, endereco);
valores.put(KEY_TELEFONE, telefone);
valores.put(KEY_CELULAR, celular);
valores.put(KEY_EMAIL, email);
boolean success = mDb.update(DATABASE_TABLE_CLIENTES, valores, KEY_ID_CLI + "=" + Id, null) > 0;
dbAdapter.close();
return success;
}
// APAGAR CLIENTE
public boolean apagarCliente(long Id){
dbAdapter.open();
int qt = mDb.delete(DATABASE_TABLE_CLIENTES, KEY_ID_CLI + "=" + Id, null);
dbAdapter.close();
return qt > 0;
}
// TODOS OS CLIENTES
public Cursor getTodosClientes(){
return mDb.query(DATABASE_TABLE_CLIENTES, null, null, null, null, null, null);
}
// CLIENTE POR ID
public Cursor getCliente(long Id){
return mDb.query(DATABASE_TABLE_CLIENTES, null, KEY_ID_CLI + "=" + Id, null, null, null, null);
}
// CLIENTE POR NOME
public Cursor getClientePorNome(String nomeString){
String[] selectionArgs = {nomeString + "%"};
// return mDb.query(DATABASE_TABLE_CLIENTES, null, KEY_NOME + "=" + selectionArgs, null, null, null, null);
return mDb.rawQuery("SELECT * FROM clientes WHERE nome like ?", selectionArgs);
}
}
Vai dar erro,mas é só você acertar o que tá faltando.
E segue o exemplo para você ter referência.
Esse é o famoso DAO então? Agora para fazer para as demais tabelas seria somente mudar o nome da classe para a outra tabela. Com isso eu separo as tabelas, correto? Faria todos os métodos para cada uma delas. No meu exemplo, uso DbAdapter, mudo para DAO e a chamada seria a mesma mudando somente o nome da classe?
Não usaria mais a DbAdapter que tem no projeto?