Enregistrement de liste de tableaux dans la base de données SQLite sous Android
J'ai travaillé avec SQLite sous android et je voudrais ajouter une liste de tableaux à une colonne dans une table, et de récupérer les données en arrière comme une liste de tableaux. La liste de tableaux est une liste de Longs. J'ai remarqué que SQL dispose d'une option pour le stockage d'objets BLOB, cependant, il semble que j'ai besoin de convertir la liste de tableaux à un byte[] d'abord, avant de pouvoir l'enregistrer comme une tache dans ma base de données SQLite.
Si quelqu'un a une solution sur la façon d'enregistrer arraylists dans une base de données SQLite qui serait grandement apprécié. Ou est-il une autre option pour l'enregistrement de mon tableau de données, je dois prendre en compte?
Vous devez vous connecter pour publier un commentaire.
À Insérer :
//....Ajouter des Valeurs à inputArray
utiliser "inputString" pour enregistrer la valeur de liste de tableaux dans la Base de données SQLite
À récupérer:
Obtenir la Chaîne de caractères à partir de la SQLiteDatabse ce que vous avez enregistré et converti en ArrayList type comme ci-dessous:
outputarray est une Chaîne qui est d'obtenir de SQLiteDatabase pour cet exemple.
S'il vous plaît pardonnez-moi pour sauvagement plagier ma réponse précédente à BLOB vs VARCHAR pour stocker des tableaux dans une table MySQL. Les autres réponses là-bas sont également très pertinent.
Je pense que les inconvénients de l'approche est probablement mieux que d'utiliser la sérialisation java depuis java builtin sérialisation auront besoin de plus d'octets, et non des applications java sera plus difficile de traiter avec les données.
Remarque: Si votre liste contient parfois plus de 31 longs (248 octets), alors vous aurez besoin d'utiliser d'objets BLOB. Vous ne pouvez pas utiliser les BINAIRES() ou VARBINARY() de MySQL. Je me rends compte que vous vous dites à propos de SQLite, mais dans l'esprit de complètement plagiat de ma précédente réponse, je vais faire semblant que vous vous dites à propos de MySQL:
J'ai eu deux
ArrayList<String>
, les deux vont de+ de 1000 entrées. J'ai regardé les blobs et les octets, mais pour moi la solution pour accélérer le processus et de le rendre utilisable était en changeant la méthode d'insertion et de se débarrasser dedatabase.insert
- Crédit pour ce qui est ici.Il est facilement adaptable à de Longs et les Entiers, etc, et de l'éclair rapide. Donc, heureusement, je n'ai pas à le rayer de ma tête plus à propos de gouttes et d'octets! Espérons que cela aide.
Il y a un moyen plus simple que de faire une telle chose complètement d'une autre manière.
vous pouvez faire une chaîne qui se compose de toutes vos valeurs de tableau.
pour cela faites un StringBuilder et ajouter les valeurs en continu et offcource avec un séparateur (comme un simbole vous que vous ne l'utilisez pas dans votre tableau de valeurs . par exemple virtuel '|' .
dans le code, par exemple :
quand vous voulez les récupérer et utiliser les valeurs. obtenir de la colonne à partir de la base de données de pure en String et avec le splite() opration pur chacune des valeurs du tableau dans une colonne de la matrice de u peut facilement l'utiliser 🙂
permet de le faire dans le code :
avec un simple convertir vous pouvez les utiliser comme double;
peut-être que ce n'est pas la norme, mais il est utile, l'espoir de l'aide 😉
Sonne comme vous voulez pour sérialiser la Liste. Voici un tutoriel/intro à la Sérialisation Java API.
Vous devrez le faire manuellement, passez à travers chaque élément de la liste et de le modifier pour l'octet avant de les stocker dans la base de données