web-dev-qa-db-fra.com

Où est ma base de données sqlite stockée dans Android?

J'ai créé une base de données sqlite sous Android, je peux l'interroger dans mon code mais je ne le trouve pas sur le système de fichiers/sdcard.

J'ai vérifié les autres SO questions, ce n'est PAS dans data/data/package-name...

Je vois une entrée de données sur mon application occupant un espace de 52 ko. Elle est donc présente. De plus, lorsque je lance l'application à nouveau, cela ne déclenche pas un OnCreate, ce qui signifie qu'il possède déjà la base de données.

Mon téléphone est enraciné et j'utilise une rom personnalisée aux haricots jelly qui fonctionne très bien à toutes fins utiles.

Des idées où cela pourrait être?

CODE c #

public class SqliteHelper : SQLiteOpenHelper
{
    private const string DATABASE_NAME = "Book";
    private const int DATABASE_VERSION = 1;

public SqliteHelper(Context ctx)
    : base(ctx, DATABASE_NAME, null, DATABASE_VERSION)
{ }

// Method is called during creation of the database
public override void OnCreate(SQLiteDatabase db)
{
    db.BeginTransaction();
    try
    {
        db.ExecSQL("CREATE TABLE Chapters (Id INTEGER PRIMARY KEY AUTOINCREMENT, Name TEXT NOT NULL);");

        ContentValues cv = new ContentValues();
        cv.Put("Name", "1. Family");
        db.Insert("Chapters", null, cv);
        cv.Put("Name", "2. Shopping");
        db.Insert("Chapters", null, cv);
        cv.Put("Name", "3. Work");
        db.Insert("Chapters", null, cv);

        db.SetTransactionSuccessful();
    }
    finally
    {
        db.EndTransaction();
    }

    //if(db.IsOpen())
    //  db.Close();
}
11
sprocket12

Dans mon téléphone rooté, il se trouve dans: /data/data/<your_app_package_name>/databases/<database_name>

exemple/data/data/com.my.package/databases/mydb 

23
S.Thiongane
  1. Allez dans Outils -> DDMS ou cliquez sur l’icône Moniteur de périphérique en regard de Gestionnaire de SDK dans la barre d’outils.
  2. La fenêtre du moniteur de périphérique s'ouvre. Sous l'onglet Explorateur de fichiers, cliquez sur données -> données -> le nom de votre projet. Après cela, votre fichier de bases de données s'ouvrira. cliquez sur l'icône "extraire un fichier du périphérique". Enregistrez le fichier en utilisant l'extension .db.
  3. ouvrez FireFox, appuyez sur Alt, Outils-> SQLiteManager.
  4. Suivez Base de données -> connexion à la base de données -> parcourez votre fichier de base de données et cliquez sur OK. Votre fichier SQLite sera ouvert maintenant. 
10
sudharsan

C'est là. La seule raison pour laquelle vous ne pouvez pas y accéder sur un appareil Android, c'est parce que ce dossier est privé et ne peut pas être vu de manière conventionnelle. Le système d'exploitation le protège application.

Si vous voulez le voir, lancez un émulateur, lancez votre application ici, allez dans la vue DDMS, faites-le à /data/data/packageName/databases et c'est là. Si vous n'avez pas accès à DDMS, utilisez cette commande ADB Shell: $ adb pull /data/data/packageName/databases/yourDBFilename.db

6
Razgriz

Appeler Context.getDatabasePath vous donnera la réponse définitive

4
JulianSymes

Si vous utilisez Android Studios, DDMS se trouve dans "Outils" - "Android" - "Moniteur de périphériques Android" . Utilisez DDMS pour le trouver comme vous le feriez dans Eclipse.

0
Simon

Les bases de données sous Android sont stockées dans "data/data/yourPackageName/databases /" par défaut

0
MattMatt