Bom dia galera,
Eu estou com um problema que eu já tentei de tudo mais não consegui, na hora que eu vou gravar no banco de dados aparece o seguinte erro no Logcat:
04-19 11:27:25.655: E/Database(224): Leak found
04-19 11:27:25.655: E/Database(224): java.lang.IllegalStateException: /data/data/br.com.afainformatica.cobrancapax/databases/cobrancapax.db SQLiteDatabase created and never closed
04-19 11:27:25.655: E/Database(224): at android.database.sqlite.SQLiteDatabase.(SQLiteDatabase.java:1694)
pelo que vocês podem ver é um erro que o banco foi criado mas nunca foi fechado, só que eu já fechei ele em monte de lugar mas continua dando o mesmo erro, eu vou colocar uma das minhas classes DAO para vocês verem qual é o possível problema:
package br.com.afainformatica.dao;
import java.util.ArrayList;
import java.util.List;
import br.com.afainformatica.cobrancapax.db;
import br.com.afainformatica.cobrancapax.vo.BairroVO;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
public class BairroDAO {
// private SQLiteDatabase db;
//private db dbHelper;
public static String table_name = "bairro";
public static Context ctx;
public static String[] columns = {"idbairro", "descricao", "idsetor"};
public BairroDAO(Context ctx) {
this.ctx = ctx;
// dbHelper = new db(ctx);
}
/* public void fecharBanco(){
dbHelper.close();
}
public void open() throws SQLException {
db = dbHelper.getWritableDatabase();
} */
public boolean insert(BairroVO vo){
SQLiteDatabase db = new db(ctx).getWritableDatabase();
ContentValues ctv = new ContentValues();
ctv.put("descricao", vo.getDescricao());
ctv.put("idsetor", vo.getIdsetor());
return (db.insert(table_name, null, ctv) > 0);
}
public boolean update(BairroVO vo){
SQLiteDatabase db = new db(ctx).getWritableDatabase();
ContentValues ctv = new ContentValues();
ctv.put("idbairro", vo.getIdbairro());
ctv.put("descricao", vo.getDescricao());
ctv.put("idsetor", vo.getIdsetor());
return(db.update(table_name, ctv, "idbairro=?", new String[]{vo.getIdbairro().toString()}) > 0);
}
public boolean delete(BairroVO vo){
SQLiteDatabase db = new db(ctx).getWritableDatabase();
return(db.delete(table_name, "idbairro=?", new String[]{vo.getIdbairro().toString()}) > 0);
}
public BairroVO getById(Integer ID){
SQLiteDatabase db = new db(ctx).getReadableDatabase();
Cursor rs = db.query(table_name, columns, "idbairro=?", new String[]{ID.toString()}, null, null, null);
BairroVO vo = null;
if (rs.moveToFirst()) {
vo = new BairroVO();
vo.setIdbairro(rs.getInt(rs.getColumnIndex("idbairro")));
vo.setDescricao(rs.getString(rs.getColumnIndex("descricao")));
vo.setIdsetor(rs.getInt(rs.getColumnIndex("idsetor")));
}
return vo;
}
public List<BairroVO> getAll() {
SQLiteDatabase db = new db(ctx).getReadableDatabase();
List<BairroVO> bairro = new ArrayList<BairroVO>();
Cursor c = db.query(table_name, columns, null, null, null, null, null);
while (c.moveToNext()) {
BairroVO vo = new BairroVO();
vo.setIdbairro(c.getInt(c.getColumnIndex("idbairro")));
vo.setDescricao(c.getString(c.getColumnIndex("descricao")));
vo.setIdsetor(c.getInt(c.getColumnIndex("idsetor")));
bairro.add(vo);
}
return bairro;
}
}