Fechar cursor SQLITE ANDROID

4 respostas
programação
D

Ola estou fazendo um projeto com SQLITE no android e estpu tendo um erro sobre o cursor no caso andei pesquisando e parece que tenho que usar o cursor.close(); mas não sei o modo certo de usa-lo , pfv me ajudem

TENTEI DESSE MODO

==========================================================

package com.example.douglas.sqlite.dao;

import android.content.ContentValues;

import android.content.Context;

import android.database.Cursor;

import android.database.sqlite.SQLiteDatabase;

import android.database.sqlite.SQLiteOpenHelper;

import com.example.douglas.sqlite.modelo.Pessoa;

import java.util.ArrayList;

/**

  • Created by Douglas on 15/01/2018.
    */
public class PessoaDao extends SQLiteOpenHelper {

private static final String NOME_BANCO = DBPessoa.db;

private static final int VERSION = 1;

private static final String TABELA = pessoa;

private static final String ID = id;

private static final String Nome = nome;

private static final String Endereço = endereço;

private static final String Telefone = telefone;

private static final String Idade = idade;
public PessoaDao(Context context) {
    super(context, NOME_BANCO, null, VERSION);
}

@Override
public void onCreate(SQLiteDatabase db) {
    String sql = "CREATE TABLE"+TABELA+" ( "+
            " "+ID+" INTEGER PRIMARY KEY AUTOINCREMENT, " +
            " "+Nome+" TEXT ,"+Idade+" TEXT, "+
            " "+Endereço+ "TEXT ,"+Telefone+" TEXT );";
    db.execSQL(sql);
}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    String sql = "DROP TABLE IS EXIST"+TABELA;
    db.execSQL(sql);
    onCreate(db);

}
public long salvarpessoa(Pessoa p){
    ContentValues values = new ContentValues();
    long retornoDB;
    values.put(Nome,p.getNome());
    values.put(Idade,p.getIdade());
    values.put(Endereço,p.getEndereço());
    values.put(Telefone,p.getTelefone());

    retornoDB = getWritableDatabase().insert(TABELA,null,values);


    return retornoDB;
}

public ArrayList<Pessoa> selectAllPessoa(){

    String [] coluns = {ID,Nome,Idade,Endereço,Telefone};



         Cursor cursor = getWritableDatabase().query(TABELA, coluns, null, null, null, null, null, null);



        ArrayList<Pessoa> listPessoa = new ArrayList<Pessoa>();
        while (cursor.moveToNext()) {
            Pessoa p = new Pessoa();

            p.setId(cursor.getInt(0));
            p.setNome(cursor.getString(1));
            p.setIdade(cursor.getString(2));
            p.setEndereço(cursor.getString(3));
            p.setTelefone(cursor.getString(4));

            listPessoa.add(p);

        }

            //cursor.close();
            return listPessoa;

}
public void closeCursor ( Cursor cursor ) {
    if (cursor != null) {
        cursor.close();
    }
}

}

4 Respostas

J

Fecha logo após terminar de usar. Seria no lugar que você deixou comentado mesmo.

Não precisa desse método closeCursor. Na prática sempre vai escrever uma linha de qualquer forma. E se é pra fechar o cursor ele sempre deve existir.

D

Ah obg , Mas no caso no comentário eu já tinha testando mas não estava dando certo , Aí criei o método para ver se daria certo mas não deu , Pode me ajudae?

D

No caso quando executo o programa uma mensagem Na tela aparece e fecha o programa (“O programa Parou”)
Mas quando retiro a parte do cursor funciona normalmente, fui pesquisando um pouco e descobri que tenho que usar o cursor.close() mas como eu vi e tentei usar não está dando certo

J

Não retorna nenhum exception quando debuga?

Criado 16 de janeiro de 2018
Ultima resposta 16 de jan. de 2018
Respostas 4
Participantes 2