2010-01-21 7 views
0

Dans Android, lorsque vous mettez à niveau une base de données, toutes les données sont perdues.Chargement de fichiers plats dans la table de base de données Android

Je suis actuellement dans une phase de développement qui impose de nombreuses mises à niveau de base de données.

Je ne veux pas perdre toutes mes données (et je dois les ressaisir manuellement) chaque fois que j'améliore ma base de données. Je souhaite stocker mes données dans des fichiers à plat et charger ces fichiers à plat dans leurs tables respectives chaque fois qu'une mise à niveau de base de données se produit.

Quelle est la façon de procéder à ce sujet sur la plate-forme Android? Où dois-je stocker les fichiers de données (res/raw)

Quel sql dois-je exécuter pour charger ces fichiers?

+0

Voici un lien vers un article sur la réimportation d'un db sqlite existant, pourrait être utile: http://www.reigndesign.com/blog/using-your-own-sqlite-database-in-android-applications/ – JeremyFromEarth

Répondre

1

Je mettrais les fichiers plats dans res/raw sauf s'ils sont XML, auquel cas je les mettrais en res/xml. En ce qui concerne l'insertion des données dans la base de données, je ferais simplement une boucle sur les valeurs dans les fichiers plats et ferais une insertion pour chaque ligne. En un coup d'œil, je ne vois aucune méthode d'insertion par lots disponible dans Android.

Il suffit de lire vos fichiers à plat en utilisant un FileReader ou un XmlPullParser en fonction du type de fichier.

+0

Si vos fichiers sont au format .csv, ne pouvez-vous pas simplement utiliser une instruction import ou quelque chose pour importer le fichier entier dans une table? ... c'est-à-dire, au lieu d'insérer chaque rangée indépendamment. – MoMo

2

mbaird a une bonne réponse pour stocker les fichiers plats. Mais dans votre cas (si je vous comprends bien), vous pouvez contourner le problème en implémentant SQLiteOpenHelper. Stocker simplement la version de base de données et la passer au constructeur. Puis gérer les changements dans onUpgrade(). Vous ne perdrez pas toutes vos données.

+0

Je n'étais pas au courant de SQLiteOpenHelper. C'est bon à savoir. –

Questions connexes