Boa tarde pessoal.
Eu estou tendo alguns problemas com cursores de estarem permanecendo abertos e etc.
E estou analisando novamente a estrutura. Estou com dúvida de alguns pontos que eu mesmo havia feito aqui, acredito que não seja o correto para se trabalhar gostaria de uma opinião até porque é a primeira vez que estou trabalhando com o SQLite, por isso montei a estrutura dessa maneira inicialmente.
Eu tenho uma classe DadosBD:
Que contém métodos ExecSelect, ExecInsert e por ai vai abaixo um exemplo de um desses métodos:
[code] public Cursor ExecSelect(String tableName, String[] tableColumn, String select, String[] selectArgs, String groupBy, String having, String orderBy){
Cursor = database.query(tableName, tableColumn, select, selectArgs, groupBy, having, orderBy);
return Cursor;
}[/code]
E tenho minha classe de Persistencia que é responsável por receber os dados e controlar os Status da aplicação e persistir no SQLite, minha dúvida é por exemplo eu tenho o método CarregaTodos() que busca todos os dados de uma determinada entidade:
[code] public Cursor CarregaTodos(){
DataBase = new DadosBD(this.getContexto());
RsAtual = DataBase.ExecSelect(Tabela, TabelaColunaComposta, TabelaSelecao, TabelaSelecaoArgumentos, TabelaGroupBy, TabelaHaving, TabelaOrderBy);
if(RsAtual.moveToNext()){
return RsAtual;
} else{
return null;
}
}[/code]
Eu estou utilizando este método para me retornar um Cursor com todos os dados de uma determinada entidade, então por exemplo vou pegar a Classe de FormaPagamento por exemplo:
Dentro dela eu faço o Override do método da Persistencia
[code] @Override
public Cursor CarregaTodos(){
this.Status = eStatus.CarregaTodos;
this.setTabela(this.getClass().getSimpleName());
this.setTabelaOrderBy("Codigo");
return super.CarregaTodos();
}[/code]
Retornando o próprio Cursor para ser trabalhado.
E ai eu recebo este Cursor na minha Activity conforme necessidade para trabalhar com os dados dele:
Minha dúvida seria é correto fazer essa transição de cursor, até porque pelo que estou analisando ficará difícil controlar o close dos cursores dessa maneira…
Eu vi que tem um pessoal que recebe o cursor e transforma em um List de dados e com isso já fecha o cursor. Essa seria a maneira mais indicada?
Obrigado desde já.