6
votes

Création de la base de données d'applications Android avec une grande quantité de données

La base de données de ma demande doit être remplie avec beaucoup de données, Donc, pendant oncreate () , il ne s'agit pas seulement de créer une table SQL Instructions, il y a beaucoup d'inserts. La solution que j'ai choisie est de stocker toutes ces instructions dans un fichier SQL situé dans res / cru et lequel est chargé avec ressources.openrawresource (ID) .

Ça fonctionne bien mais je suis confronté à un problème de codage, j'ai des accentués Caharacters dans le fichier SQL qui apparaît mal dans mon application. Ce mon code pour faire ceci: xxx

La solution que j'ai trouvée pour éviter que ceci est de charger les instructions SQL à partir d'une énorme chaîne finale statique au lieu d'un fichier, et tout Les caractères accentués apparaissent bien.

mais ce n'est pas un moyen plus élégant de charger des instructions SQL qu'un grand String statique finale Attribut avec toutes les instructions SQL?


0 commentaires

4 Réponses :


4
votes

La solution de fichier SQL semble parfaite, c'est juste que vous devez vous assurer que le fichier est enregistré dans l'encodage UTF8, sinon tous les caractères accentués seront perdus. Si vous ne voulez pas modifier le codage du fichier, vous devez passer un argument supplémentaire à la nouvelle chaîne (octets, caractalet) définissant le codage du fichier.

préfère utiliser des ressources de fichier au lieu de la chaîne finale statique pour éviter d'avoir tous ces octets inutiles chargés en mémoire. Dans les téléphones mobiles, vous souhaitez enregistrer toute la mémoire possible!


0 commentaires

8
votes

Je pense que votre problème est dans cette ligne: xxx

Vous convertissez le tableau des octets en un java.lang.string mais vous êtes Ne dites pas Java / Android le codage à utiliser. Les octets de vos caractères accentués ne sont donc pas utilisés correctement car le codage incorrect est utilisé.

Si vous utilisez le string (octet [], ) Constructeur Vous pouvez spécifier l'encodage de votre fichier et vos caractères seront correctement convertis.


0 commentaires


1
votes

J'utilise une approche différente: Au lieu d'exécuter des charges de relevés SQL (qui prendra longtemps de temps à compléter), je construisez ma base de données SQLite sur le bureau, mettez-la dans le dossier de l'actif, créez un dB SQLite dB vide dans Android et copiez la DB du dossier Actifs dans le Dossier de base de données. C'est une augmentation énorme de la vitesse. Remarque, vous devez d'abord créer une base de données vide dans Android, puis vous pouvez copier et écraser. Sinon, Android ne vous permettra pas d'écrire un DB dans le dossier DATBASE. Il existe plusieurs exemples sur Internet. BTW, semble que cette approche fonctionne mieux, si la DB n'a pas d'extension de fichier.


0 commentaires