2009-12-23 3 views
25

Jusqu'à présent, nous avons développé des applications dans Android qui créent une base de données sur l'exécution. Nous aimons savoir comment pouvons-nous accéder à un fichier de base de données/sqlite pré-construit ou existant dans notre application Android? Veuillez fournir des détailsComment accéder à une base de données sqlite existante dans Android?

+0

@Yaqub Ahmad Merci pour le montage pour le rendre plus clair. –

+0

Vous voudrez essayer [android sqlite asset helper] (https://github.com/jgilfelt/android-sqlite-asset-helper). Cela en fait un morceau de gâteau. – craned

Répondre

32

Consultez la documentation de android.database.sqlite.SQLiteDatabase.

En particulier, il existe une commande openDatabase() qui accède à une base de données en fonction d'un chemin de fichier.

SQLiteDatabase db = SQLiteDatabase.openDatabase(path, null, 0); 

Il suffit de spécifier le chemin de votre base de données comme la variable path, et cela devrait fonctionner.

+1

Supposons que j'ai mon fichier db dans mon dossier assets puis quel chemin je vais fournir à la variable path? –

+5

Voir cette autre question, liée à: http://stackoverflow.com/questions/513084/how-to-ship-an-android-application-with-a-database En bref, vous ne pouvez pas le faire directement. Vous devez copier les données de votre fichier APK dans un nouveau fichier dans/data, vous pouvez alors l'ouvrir directement. Ce blog a plus d'informations: http://www.reigndesign.com/blog/using-your-own-sqlite-database-in-android-applications/ –

0

Copiez d'abord votre SDCARD et indiquez son chemin dans la variable "DBNAME" dans l'exemple suivant. ce sera quelque chose comme "/sdcard/persons.db" si vous le tirez directement sur la carte SD.

+0

Pourriez-vous développer? Ce n'est pas tout à fait clair pour moi comment cela résout le problème. Le lien dans la première version de votre réponse est également cassé - pourriez-vous le réparer? – JonasCz

3

J'ai suivi la même route et a trouvé deux problèmes:

  1. inclure le champ _id sur une table que vous créez et assurez-vous qu'il est une partie des colonnes de revenir lorsque vous interrogez une table.
  2. Vous pouvez rencontrer une erreur comme Impossible d'ouvrir la base de données. fermeture it.. C'est parce que nous copions la base de données à partir d'un fichier existant au lieu de créer des tables au-dessus d'une base de données créée par l'API android sqlite et la table android_metadata peut ne pas exister. Pour sa création il suffit d'exécuter la requête suivante sur votre db:

    CREATE TABLE android_metadata (locale TEXT);

    Et ajouter les paramètres régionaux correspondant, par exemple en_US

+0

Puis-je exécuter ce sql sur la base de données SQLite existante ou dois-je l'exécuter sur la base de données créée en copiant les données de la base de données existante dans/assets /? – marienke

+0

Il devrait être exécuté sur la base de données existante dans le dossier "assets" ou une fois copié dans la base de données de l'application, mais je suppose qu'il est plus facile d'avoir la table dans la base de données avant de la copier – gantzer89

0

Utilisez-la pour la base de données accéder à l'application:

Context context = getApplicationContext(); 
context.getDatabasePath(DataBaseHelper.database_Name); 
Questions connexes