Android: SQLite économie de tableau de chaîne?
J'ai besoin d'enregistrer un tableau de chaînes à la base de données, mais il ne me laisse pas. C'est ce que j'ai:
public long createEntry(String startTime, String endTime, String[] states) {
ContentValues initialValues = new ContentValues();
initialValues.put(START_KEY_TIME , startTime);
initialValues.put(END_KEY_TIME , endTime);
initialValues.put(KEY_STATE, states );
return databaseConnect.insert(DATABASE_TABLE, null, initialValues);
}
Mais si je mets string[]
états, il est dit que les valeurs de contenu n'est pas en mesure de prendre un argument. Comment puis-je obtenir autour de qui? Je pensais que j'ai 7 choses dans les états, j'aime avoir 7 chaînes de caractères séparées et de stocker des choses dans chaque et ensuite mettre toutes les chaînes de retour dans un tableau de chaînes? Ou serait-ce une mauvaise pratique?
- Pourquoi vous avez besoin pour économiser de la matrice dans la base de données? il doit être une autre bonne solution.
- j'ai 7 jours de la semaine, mais et il le prend comme une valeur booléenne(true ou false), et il doit être de type boolean et puisque vous ne pouvez pas enregistrer booléens de base de données que j'allais utiliser de tableau de chaîne, mais il ne me laissera pas en raison de cotentvalues toutes les idées sur ce que je peux faire?
- Vous pouvez stocker les valeurs Booléennes comme des entiers compris entre 0 (faux) et 1 (vrai).
- Vous pouvez utiliser une valeur entière pour stocker les valeurs d'indicateur. E. g. pour le dimanche et le mardi la valeur serait 01010000 (binaire), ou quelque chose comme ça. Avec cela dit, vous devriez vraiment être stocker les sept booléens dans des colonnes séparées à la place.
- Une autre approche peut être à l'aide de JSONObject comme décrit [ici]( stackoverflow.com/questions/5703330/...)
Vous devez vous connecter pour publier un commentaire.
Vous ne pouvez pas enregistrer de la Chaîne de la matrice de dans la Base de données. Mais vous pouvez utiliser cette astuce.
1), Donc vous devez le convertir en Chaîne de caractères à l'aide de
convertArrayToString(String[] array)
méthode. Cette concaténer tous les éléments de la chaîne à l'aide de 'virgule'.2) Lorsque vous permettrait de récupérer cette Chaîne de retour à partir de la Base de données vous pouvez convertir en arrière à tableau de Chaîne à l'aide de
convertStringToArray(String str)
méthode. Cette méthode split de la chaîne de "virgule" et vous obtiendrez votre tableau original de retour.Basé sur Muhammed la réponse, mais les poignées de
List
deString
s au lieu de tableau et utiliseStringBuilder
au lieu d'affectation de plusieursString
s lors de la concaténation des valeurs:Convertir en Chaîne unique pour l'enregistrer dans sqlite.
Plus tard, le récupérer à l'arrière de sqlite comme une seule chaîne et convertir à un Tableau de Chaîne de caractères.
content[]
qui est arrivé à être"#a1r2ra5yd2iv1i9der"
. Ce serait sérialisé, mais lors de la désérialisation, l'ambiguïté entraînerait deux chaîne vide éléments de l'infraction d'un élément de chaîne. Si d'autres domaines du programme stricte expecations de la taille de la matrice, ce qui pourrait conduire à un comportement indésirable.Il serait plus facile si vous convertissez un tableau de Chaînes à JSONArray, utiliser toString et puis, récupérer par l'analyse de la première dans JSONArray et ensuite, de le convertir en tableau de Chaînes de caractères
__,__
ou#a1r2ra5yd2iv1i9der
etc.) trouvé dans l'un des éléments du tableauIl ressemble à votre base de données n'est pas conçu comme il se doit. Si vous souhaitez stocker les données booléennes dans la base de données SQLite, vous pouvez stocker les valeurs Booléennes comme des entiers compris entre 0 (faux) et 1 (vrai)