2012-06-22 7 views
6

Sembra che i cursori in Android possano contenere solo fino a 1 MB di dati.Dimensione massima del cursore Android

Quale sarebbe il modo più efficiente per tirare il numero massimo di righe da una tabella in un database SQLite che rimane sotto il limite di 1 MB?

+0

Il modo migliore che ho trovato finora è quello di campionare alcune righe e "stimare" quante righe è possibile tirare. Devi solo assicurarti di non superare mai il limite di 1 MB. – zzzzzzzzzzzzzzzzzzzzzzzzzzzzzz

+0

il metodo migliore è utilizzare il concetto di paging, ovvero ottenere i dati dal database in parti, ottenere le righe dieci per dieci e cancellare il cursore prima del successivo recupero dal database. – deepak825

risposta

-1

È possibile inserire la clausola LIMIT, in modo che le righe vengano recuperate in parti.

+0

Giusto, ma come dovrei determinare qual è il limite appropriato? – zzzzzzzzzzzzzzzzzzzzzzzzzzzzzz

+0

è possibile utilizzare Count clausola 1 – Programmer

+0

Quindi è possibile dividere equamente o in qualsiasi modo che desideri – Programmer

0

Non credo ci sia un modo duro e veloce per determinare il limite destro, ma ho guardato nella documentazione CursorWindow e ha scoperto che copyStringToBuffer (int row, int column, CharArrayBuffer buffer) sembra promettente come CharArrayBuffer ha un campo intero chiamato sizeCopied e il metodo copyStringToBuffer prende il testo la riga e la colonna specificate. Forse puoi ottenere la dimensione dal buffer e aggiungere per ogni riga e colonna che hai? Se stai usando SQLiteCursor, puoi usare setWindow(CursorWindow window) per impostare la tua finestra.