hoje coloco tudo dentro de um list, segue um exemplo.
public List<UsuarioDTO> getAll() {
try {
SQLiteDatabase db = new DBHelper(ctx).getWritableDatabase();
List<UsuarioDTO> lista = new ArrayList<UsuarioDTO>();
Cursor c = db.query(table_name, colunas, null, null, null, null,
null);
while (c.moveToNext()) {
lista.add(new UsuarioDTO(c));
}
c.close();
close(db);
return lista;
} catch (SQLException e) {
Log.e("ERRO SQL", "Erro ao buscar Usuario: " + e.toString());
return null;
}
}
2012/7/5 Gabriel Augusto <gabrielaugustodm@gmail.com>
Pessoal,Estou tendo alguns problemas com finalização de banco ou de cursor (ainda não consegui identificar).Acredito que o problema esteja nessa função, que seleciona todos e retorna um próprio cursor. Não posso fecha-lo antes de retorna-lo. Segue a função:// Retorna um cursor com todos os registrospublic Cursor getCursor() {try {// select * from registroCursor cursor = db.query(NOME_TABELA, Registro.COLUNAS, null, null, null, null, null, null);return cursor;} catch (SQLException e) {Log.i(CATEGORIA, "Erro ao buscar os registros: " + e.toString());return null;}}E o log:07-05 15:38:42.711: E/Database(3332): close() was never explicitly called on database '/data/data/com.gpslocator/databases/registros'07-05 15:38:42.711: E/Database(3332): android.database.sqlite.DatabaseObjectNotClosedException: Application did not close the cursor or database object that was opened here07-05 15:38:42.711: E/Database(3332): at android.database.sqlite.SQLiteDatabase.<init>(SQLiteDatabase.java:1810)07-05 15:38:42.711: E/Database(3332): at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:817)07-05 15:38:42.711: E/Database(3332): at android.database.sqlite.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:851)07-05 15:38:42.711: E/Database(3332): at android.database.sqlite.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:844)07-05 15:38:42.711: E/Database(3332): at android.app.ContextImpl.openOrCreateDatabase(ContextImpl.java:540)07-05 15:38:42.711: E/Database(3332): at android.content.ContextWrapper.openOrCreateDatabase(ContextWrapper.java:203)07-05 15:38:42.711: E/Database(3332): at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:98)07-05 15:38:42.711: E/Database(3332): at com.db.RepositorioRegistroScript.<init>(RepositorioRegistroScript.java:42)07-05 15:38:42.711: E/Database(3332): at com.gpslocator.Locator.verificaDb(Locator.java:360)07-05 15:38:42.711: E/Database(3332): at com.gpslocator.Locator.checaNet(Locator.java:311)07-05 15:38:42.711: E/Database(3332): at com.gpslocator.Locator$4.handleMessage(Locator.java:288)07-05 15:38:42.711: E/Database(3332): at android.os.Handler.dispatchMessage(Handler.java:99)07-05 15:38:42.711: E/Database(3332): at android.os.Looper.loop(Looper.java:123)07-05 15:38:42.711: E/Database(3332): at android.app.ActivityThread.main(ActivityThread.java:4669)07-05 15:38:42.711: E/Database(3332): at java.lang.reflect.Method.invokeNative(Native Method)07-05 15:38:42.711: E/Database(3332): at java.lang.reflect.Method.invoke(Method.java:521)07-05 15:38:42.711: E/Database(3332): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:876)07-05 15:38:42.711: E/Database(3332): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:634)07-05 15:38:42.711: E/Database(3332): at dalvik.system.NativeStart.main(Native Method)As vezes tambem recebo um log: "Finalizing a Cursor that has not been deactivated or closed"Abraço,Gabriel Augusto
Abraço
Cristian Cardoso
@CTNCardoso
http://ctncardoso.com.br






0 comentários:
Postar um comentário