8
votes

Est-il possible de déplacer la DB interne sur la carte SDCard?

Comme la base de données de mon application grandit, elle nécessitera de plus en plus de l'espace téléphonique interne. Il n'y a pas de données sensibles / privées dans la DB, donc je suis intéressé à la déplacer vers la carte SD.

J'utilise SQLITEOPENHELLER pour vous aider avec le travail de la base de données. C'est à ma compréhension que vous ne pouvez pas l'utiliser pour la DB-Access sur la carte SD, car vous ne pouvez pas définir le chemin de DB. Cependant, il existe des exemples (très pauvres) sur Internet qui suggèrent que vous pouvez remplacer cette limitation. Cependant, je n'ai jamais reçu l'un de ces échantillons de code à compiler.

est-ce possible? Et si oui - comment! Veuillez noter que les "applications sur la carte SD" de Froyo ne fonctionneront pas car elle ne déplacent pas les fichiers internes.


0 commentaires

4 Réponses :


9
votes

Il suffit d'utiliser: xxx

où db_full_path peut être un chemin d'accès à votre carte SDCARD, comme /sdcard/mydatabase.dboke/prodatabase.dboke:

C'est ce que j'appelle dans mon application pour accéder à la base de données .... xxx

... et c'est la classe d'assistance DB que j'utilise, ce qui s'étend en fait Sqliteopenhelper, vous aurez donc toujours tout ce que vous voulez de cette classe. xxx


5 commentaires

Je ne suis pas certain que cela peut être utilisé conjointement avec Sqliteopenhelper. Malheureusement, je ne suis pas dans mon espace de travail en ce moment et je ne peux pas tester. Votera si c'est aussi simple que cela, cependant.


Vous vous demandez pourquoi avez-vous explicitement besoin de sqliteopenhelper?


Il a un tas de méthodes d'assistance pour la création de bases de données et les mises à niveau de la base de données. Je ne connais pas un moyen plus simple de manipuler ces actions.


Cette réponse est absurde. Vous utilisez simplement SQLITEOPENHELLER TIME THB, comme vous ne l'utilisez pas vraiment, vous ouvrez vous-même une base de données séparée vous-même, ce qui rend l'héritage inutile.


Pourquoi donc? Je n'ai rien mentionné nulle part où je l'utilise dans mon code pour résoudre la question (ouverture de la base de données), j'ai demandé à l'Op pourquoi il voulait utiliser Sqliteopenhelper en premier lieu, voir mon deuxième commentaire. Je viens d'hériter au cas où il veut l'utiliser plus tard dans le programme. D'autre part, cette réponse est déjà> 6 ans, je ne me souviens plus des détails de celui-ci.



0
votes
WorkoutDBOpenHelper(Context context, String dbPath) {
    super(context, dbPath, null, DATABASE_VERSION);

}

0 commentaires

1
votes

J'ai trouvé que je pourrais utiliser un chemin complet dans Android 2.2, mais en 2.1 la méthode context.openorcreateDatabase () a jeté une exception. Pour contourner ce problème, j'ai enveloppé cette méthode pour appeler directement SQLITITABASE.OPENORCREATABASE () directement. Voici le constructeur de mon sqlopenhelper étendu xxx


0 commentaires

0
votes

Ce sera ok. Je pensais xxx


0 commentaires