Accedi a BLOB grande in Android Sqlite senza cursore

Sembra che esista un limite di 1 MB sulla dimensione window Cursor di Android che limita la capacità di leggere BLOB da SQLite. So che si può dire che non dovremmo memorizzare i BLOB nel database, ma per definizione, BLOB è considerato un Oggetto Grande Binario e se non c'era bisogno di memorizzarli nel database, non c'era bisogno di implementare tale tipo di object in alcun motore di database.

Il limite di 1 MB per l'implementazione di Cursor tuttavia sembra insufficiente in quasi tutti i casi. Devo memorizzare i dati binari per motivi validi nel database SQLite e sono ben oltre 1 MB. SQLite è in grado di gestire i BLOB perfettamente poiché l'API C funziona perfettamente in Xcode (piattaforma iPhone) per recuperare oggetti di grandi size senza problemi.

  • passando l'argomento a DialogFragment
  • findviewbyid restituisce null in una window di dialogo
  • Fare GSON & Realm giocare piacevole
  • java.lang.numberformatexception: doppio non valido: ""
  • Impostare un client Stomp in android con il framework Spring nel lato server
  • La differenza tra dexopt e dex2oat?
  • Le mie domande sono se possiamo accedere ai dati BLOB in Android senza utilizzare cursori. Sto pensando ad un accesso a livello inferiore a Sqlite in Java. Eventuali suggerimenti?

  • Twitter4j: Ottieni l'elenco delle risposte per un certo tweet
  • Pulsanti RecyclerView ItemTouchHelper su Swipe
  • Dov'è la documentazione del filter (e come posso utilizzarlo)?
  • Come funziona "? Android: attr / activatedBackgroundIndicator"?
  • Twilio - chiamata in conferenza android app
  • Come serializzare Object a JSON?
  • 3 Solutions collect form web for “Accedi a BLOB grande in Android Sqlite senza cursore”

    Come affermato da CL, l'utilizzo di NDK è infatti un modo per accedere a Sqlite nativamente tramite il linguaggio C in lingua Java. Comunque ho capito che potrebbe diventare veramente disordinato se volevo scrivere un involucro personalizzato e cercare di accedere alle funzioni in Java.

    Dopo la ricerca in giro, mi sono imbattuto in un brillante progetto open source chiamato Sqlite4java, che è un wrapper stretto intorno a Sqlite, compilato per l'uso su varie piattaforms, tra cui Android. Questa libreria consente di interagire con Sqlite senza utilizzare Android Cursor che rimuove le limitazioni.

    Sono in grado di recuperare 20 MB di Blob in 480 millisecondi. Questo è ancora più veloce di leggere un piccolo record da Sqlite tramite Cursori. Credo che questo possa essere utilizzato per migliorare qualsiasi query a Sqlite saltando l'uso di Cursore. Ecco il link a questa grande libreria: http://code.google.com/p/sqlite4java/

    L'API Java di Android ha sempre il limite di 1 MB.

    Non devi memorizzare i BLOB di tale dimensione nel database; il file system è più efficiente nel gestirli.

    Se si desidera veramente utilizzare BLOB, è necessario passare attraverso la NDK per accedere direttamente alla API C.

    Esiste in realtà una soluzione senza ricorrere ad una diversa implementazione di wrapper SQLite per Android!

    Recuperare il grande block dal database sqlite di Android

    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.