2012-06-22 18 views
6

Wygląda na to, że kursory w systemie Android mogą pomieścić tylko 1 MB danych.Android Cursor maksymalny rozmiar

Jaki byłby najbardziej skuteczny sposób pobrania maksymalnej liczby wierszy z tabeli w bazie danych SQLite, która nie przekracza limitu 1 MB?

+0

Najlepszym sposobem, jaki udało mi się opracować do tej pory, jest wypróbowanie kilku rzędów i "oszacowanie" liczby rzędów, które można przeciągnąć. Musisz tylko upewnić się, że nigdy nie przekroczysz limitu 1 MB. – zzzzzzzzzzzzzzzzzzzzzzzzzzzzzz

+0

Najlepszą metodą jest użycie koncepcji stronicowania, czyli pobranie danych z bazy danych w częściach, pobranie rzędów dziesięć na dziesięć i wyczyszczenie kursora przed następnym pobraniem z bazy danych. – deepak825

Odpowiedz

0

Nie sądzę, nie ma twardy i szybki sposób określić odpowiednią granicę, ale spojrzał w dokumentacji CursorWindow i stwierdził, że copyStringToBuffer (int row, int column, CharArrayBuffer buffer) wydaje się obiecujące jako CharArrayBuffer ma pole całkowitą zwaną sizeCopied oraz metodę copyStringToBuffer potrzebny tekst na określony wiersz i kolumnę. Może możesz pobrać rozmiar z bufora i dodać do każdego wiersza i kolumny? Jeśli używasz SQLiteCursor, możesz użyć setWindow(CursorWindow window), aby ustawić własne okno.

Powiązane problemy