web-dev-qa-db-de.com

Wo ist meine SQLite-Datenbank in Android gespeichert?

Ich habe eine sqlite-Datenbank in Android erstellt. Ich kann sie in meinem Code abfragen, aber ich kann sie nicht im Dateisystem/der SD-Karte finden.

Ich habe die anderen SO - Fragen geprüft, NICHT in data/data/package-name....

Ich sehe einen Dateneintrag in meiner App, der 52 kb Speicherplatz beansprucht, daher ist er dort vorhanden. Wenn ich die App erneut starte, wird keine OnCreate ausgelöst, was bedeutet, dass die DB bereits vorhanden ist.

Mein Telefon ist verwurzelt und ich verwende eine benutzerdefinierte Jelly-Bean-ROM, die in jeder Hinsicht gut funktioniert.

Irgendwelche Ideen wo es sein könnte?

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

In meinem gerooteten Telefon ist es in: /data/data/<your_app_package_name>/databases/<database_name>

beispiel/Daten/Daten/com.my.package/databases/mydb 

23
S.Thiongane
  1. Gehen Sie zu Tools -> DDMS oder klicken Sie in der Symbolleiste neben dem SDK-Manager auf das Symbol Device Monitor.
  2. Das Gerätemonitor-Fenster wird geöffnet. Klicken Sie auf der Registerkarte Datei-Explorer auf Daten -> Daten -> Ihren Projektnamen. Danach wird Ihre Datenbankdatei geöffnet. Klicken Sie auf das Symbol "Eine Datei vom Gerät ziehen". Speichern Sie die Datei mit der Erweiterung .db.
  3. Öffnen Sie FireFox, drücken Sie Alt, Tools-> SQLiteManager.
  4. Folgen Sie Datenbank -> Verbindung mit Datenbank herstellen -> durchsuchen Sie Ihre Datenbankdatei und klicken Sie auf OK. Ihre SQLite-Datei wird jetzt geöffnet. 
10
sudharsan

Es ist dort. Der einzige Grund, aus dem Sie auf einem Android-Gerät nicht darauf zugreifen können, besteht darin, dass der Ordner privat ist und nicht mit herkömmlichen Methoden angezeigt werden kann. Das Betriebssystem schützt diesen Ordner und diesen Ordner (und sein Inhalt, z. B. Ihre Datenbank), kann nur von diesem bestimmten Benutzer verwendet werden Anwendung.

Wenn Sie es sehen möchten, führen Sie einen Emulator aus, führen Sie Ihre Anwendung dort aus, gehen Sie zur DDMS-Ansicht, und führen Sie /data/data/packageName/databases aus. Wenn Sie keinen Zugriff auf DDMS haben, verwenden Sie diesen ADB-Shell-Befehl: $ adb pull /data/data/packageName/databases/yourDBFilename.db

6
Razgriz

Wenn Sie Context.getDatabasePath aufrufen, erhalten Sie die endgültige Antwort

4
JulianSymes

Wenn Sie Android Studios verwenden, befindet sich DDMS in "Tools" - "Android" - "Android Device Monitor" . Verwenden Sie DDMS, um es so zu finden, wie Sie es in Eclipse getan hätten.

0
Simon

Datenbanken in Android werden standardmäßig in "data/data/yourPackageName/database /" gespeichert

0
MattMatt