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();
}
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
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
Appeler Context.getDatabasePath
vous donnera la réponse définitive
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.
Les bases de données sous Android sont stockées dans "data/data/yourPackageName/databases /" par défaut