La base de données de ma demande doit être remplie avec beaucoup de données,
Donc, pendant Ç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: p> 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 code> au lieu d'un fichier, et tout
Les caractères accentués apparaissent bien. P> mais ce n'est pas un moyen plus élégant de charger des instructions SQL qu'un grand
oncreate () code>, 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) code>. String statique finale code> Attribut avec toutes les instructions SQL? P> P>
4 Réponses :
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 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! P> (octets, caractalet) code> définissant le codage du fichier. P>
Je pense que votre problème est dans cette ligne: Vous convertissez le tableau des octets en un Si vous utilisez le java.lang.string code> 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é. P> string (octet [],
On dirait que vous passez toutes vos déclarations SQL dans une chaîne. C'est un problème parce que EXECSQL attend "une seule déclaration qui n'est pas une requête" (voir la documentation [ici] [1]). Vous trouverez ci-dessous une solution quelque peu laid-mais-travail.
J'ai toutes mes déclarations SQL dans un fichier comme celui-ci: p>
Insérer dans la table1 Valeurs (1, 2, 3); P>
Insérer dans la table1 Valeurs (4, 5, 6); P>
Insérer dans la table1 Valeurs (7, 8, 9); P> blockQuote>
Notez les nouvelles lignes entre le texte (Semicolon suivi de 2 nouvelles lignes) Ensuite, je le fais: p>
xxx pré> Mes colonnes de données contiennent des blobs de texte avec de nouvelles lignes et des points-virgules, je devais donc trouver un séparateur de commande différent. Assurez-vous simplement de créer de la créativité avec le Split Str: Utilisez quelque chose que vous savez n'existe pas dans vos données. p>
hth Gerardo p>
[1]: http://developer.androïd.com/reference/andrroid/database/sqlite/sqlitedatabase.htmlivedatabase.html#execsql (java.lang.string , java.lang.Object []) p> p>
Je fais une scission (";") aussi, et mon problème n'était pas à propos des déclarations SQL mais de coder les personnages.
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. P>