IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Android Discussion :

Stocker une liste de Blob dans une database


Sujet :

Android

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2014
    Messages
    521
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2014
    Messages : 521
    Par défaut Stocker une liste de Blob dans une database
    Bonjour,

    j'essaye d'utiliser la SQLite pour passer rapidement des donnés, à l'aide d'un "Blob" ce qui fonctionne.

    Cependant, il semblerait qu'il y ait une limite de 1MB ( ou 2.5MB pour les versions récentes ) de stockage.:


    J'aimerais donc pouvoir créer une table SQLiteDatabase contenant une liste dynamique ( ou non ) de Blob, type Array par exemple afin de pouvoir faire passer plus de donnés quand nécessaire.

    Est-ce possible ?

    Ou connaissez vous d'autres solutions pour pouvoir utiliser ainsi la SQLite en faisant passer des donnés de plus de 2.5MB ?

    Merci si vous pouvez m'éclairer de vos lanternes .

  2. #2
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 693
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 693
    Par défaut
    Qu'est ce que tu entends par "faire passer" des donner ?
    Si tu les stock dans une bdd pour les faire passer entre activité ce n'est pas la bonne solution.

    En règle général on évite de stocker des données binaires dans les bases. on préfère en principe stocker les données dans un fichier et stocker son lien dans la base. Ca demande un chouilla plus de gestion à la suppression de la données , mais c'est en principe plus efficace.

    Ceci étant dit la limite par défaut d'un blob dans sqlite est de 1Go :
    The maximum number of bytes in a string or BLOB in SQLite is defined by the preprocessor macro SQLITE_MAX_LENGTH. The default value of this macro is 1 billion (1 thousand million or 1,000,000,000)
    https://www.sqlite.org/limits.html

    Après peut être que android à modifier cette valeur.
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2014
    Messages
    521
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2014
    Messages : 521
    Par défaut
    Merci pour ta réponse, Grunk.

    En fait ce n'est pas pour passer des données d'une activité a l'autre mais simplement pour pouvoir charger des données mémorisées (sauvegarde d'un niveau par exemple) (ce qui sans doute revient au même).
    J'utilisais jusque là des fichiers directement, mais, si l'écriture se fait rapidement, la lecture de celles ci était anormalement longue.
    j'utilisais un fichier texte avec un scanner peut être que cela vient de là ?

    j'ai donc cherché d'autres méthodes et suis tombé sur la SQLite qui m'a permis de faire passer un Bundle et donc de lire directement des données puis j'ai appris comment utiliser plutôt des tableaux de Bytes plus rapides et enfin utiliser Parcelable pour des objets.

    Maintenant que tu le dis, peut être qu'il suffit simplement d'utiliser cette méthode directement sur un fichier ( en somme l'écrire en Byte et le lire en Byte ) , pour optimiser la lecture ?
    ( je vais de ce pas essayer car la limite me pousse a galérer pour un résultat semble-t-il bancale ).

    Autrement, entre 1GO et 1MO il y a quand même une vache de différence !
    En fait, je ne sais pas vraiment ce qu'il en est...car dans le bug il se contente de dire que le scanner n'est pas trouvable ( ce qui laisse a penser que l'enregistrement des données a mal fonctionné sans doute ).

  4. #4
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2014
    Messages
    521
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2014
    Messages : 521
    Par défaut
    Merci a toi, Grunk !

    Ca marche. Effectivement l'utilisation d'un fichier ( en l’occurrence tout court ), suffit amplement.

    Mon véritable problème venait de l'utilisation d'un scanner tout a fait inapproprié pour lire des paquets de donnés.

    En utilisant un Bundle "Parcelé", (si j'ose dire )...ça marche !


    C'était en vérité simplissime : on trouve ici un exemple :
    http://stackoverflow.com/questions/1...bundle-to-file

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 8
    Dernier message: 29/10/2016, 09h09
  2. [AC-2010] Utiliser valeur d'une liste de choix dans une liste déroulante d'un autre formulaire
    Par Sébastien1609 dans le forum Macros Access
    Réponses: 1
    Dernier message: 11/06/2015, 15h31
  3. Réponses: 9
    Dernier message: 21/05/2014, 20h21
  4. Réponses: 1
    Dernier message: 26/12/2010, 21h20
  5. Réponses: 0
    Dernier message: 09/11/2010, 15h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo