Ich habe programmgesteuert eine SQLite-Datenbank mit der Standardmethode zum Erweitern SQLiteOpenHelper
und Überschreiben erstellt onCreate()
. Auf diese Weise wird die Datenbank bei Bedarf im laufenden Betrieb erstellt.
Ich möchte den Inhalt der Datenbankdatei auf meinem OS X-Computer mit einem SQLite-Browser überprüfen. Ich kenne den Namen der Datenbankdatei, kann ihn aber auf dem Gerät nicht finden. Ich habe mich über USB mit dem Gerät verbunden und mit Finder und Terminal gesucht, aber ich kann die Datenbankdatei einfach nicht finden.
Was ist der Standardspeicherort für SQLite-Datenbanken auf einem Android-Gerät?
Antworten:
Sie finden Ihre erstellte Datenbank mit dem Namen
<your-database-name>
im
Ziehen Sie es mit dem Datei-Explorer heraus und benennen Sie es in die Erweiterung .db3 um, um es in SQLiteExplorer zu verwenden
Verwenden Sie den Datei-Explorer von DDMS, um zum Emulatorverzeichnis zu navigieren.
quelle
700
. Sie benötigen Root-Rechte, um es zu sehen.Dafür habe ich getan
Dazu muss Ihre App über die Berechtigung zum Zugriff auf die SD-Karte verfügen. Fügen Sie Ihrer manifest.xml die folgenden Einstellungen hinzu
Kein brillanter Weg, aber funktioniert.
quelle
Der Kontext enthält viele Pfadfunktionen: Context.getXXXPath ()
Eine davon ist android.content.Context.getDatabasePath (String dbname), der den absoluten Pfad einer Datenbank namens dbname zurückgibt.
Der zurückgegebene Pfad wäre in diesem Fall ungefähr so:
Beachten Sie, dass dieser Pfad automatisch generiert wird, wenn Sie SQLiteOpenHelper zum Öffnen der Datenbank verwenden.
quelle
Wenn Sie über ein echtes Gerät sprechen,
/data/data/<application-package-name>
ist der Zugriff nicht möglich. Sie müssen Root-Rechte haben ...quelle
sudo su
Dies ist eine alte Frage, aber die Beantwortung kann anderen helfen.
Der Standardpfad, in dem Android Datenbanken speichert, kann auf nicht gerooteten Geräten nicht aufgerufen werden. Der einfachste Weg, auf Datenbankdateien zuzugreifen (nur für Debugging-Umgebungen), besteht darin, den Konstruktor der Klasse zu ändern:
Denken Sie daran, Änderungen für Produktionsumgebungen mit folgenden Zeilen vorzunehmen:
quelle
Failed to open database '/mnt/sdcard/itens'.
inLogcat
/data/data/packagename/databases/
dh
/data/data/com.example.program/databases/
quelle
Eine SQLite-Datenbank ist nur eine Datei. Sie können diese Datei nehmen, verschieben und sogar auf ein anderes System kopieren (z. B. von Ihrem Telefon auf Ihre Workstation), und es funktioniert einwandfrei. Android speichert die Datei im
/data/data/packagename/databases/
Verzeichnis. Sie können dasadb command
oder dasFile Explorer view
in Eclipse (Window > Show View > Other... > Android > File Explorer
) verwenden, um es anzuzeigen, zu verschieben oder zu löschen.quelle
Nun, das könnte spät sein, aber es wird helfen. Sie können auf die Datenbank zugreifen, ohne Ihr Gerät über adb zu rooten
Starten Sie die ADB mit cmd und geben Sie die folgenden Befehle ein
Jetzt können Sie von hier aus öffnen.
quelle
Wenn Sie Ihre Datenbank als Datei benennen, ohne einen Pfad anzugeben, lautet die häufigste Methode zum Abrufen des Ordners wie folgt:
wo
DBAdapter.DATABASE_NAME
ist nur eineString
wie "mydatabase.db". Gibt denContext.getFilesDir()
Pfad für die Dateien der App zurück wie:/data/data/<your.app.packagename>/files/
Deshalb müssen Sie.getParent()+"/databases/"
"Dateien" entfernen und stattdessen "Datenbanken" hinzufügen.BTW Eclipse warnt Sie vor fest codierten Zeichenfolgen "data / data /", in diesem Fall jedoch nicht.
quelle
Überprüfen Sie, ob Ihre Datenbank im Gerätespeicher gespeichert ist. Wenn ja, müssen Sie die Berechtigung in Manifest.xml verwenden:
quelle
Sie können mit der ADB-Shell - Anleitung darauf zugreifen
Inhalt vom obigen Link:
quelle
Wenn Ihre Anwendung eine Datenbank erstellt, wird diese Datenbank standardmäßig im Verzeichnis gespeichert
DATA/data/APP_NAME/databases/FILENAME.
Die Teile des obigen Verzeichnisses basieren auf den folgenden Regeln. DATA ist der Pfad, den die Environment.getDataDirectory () -Methode zurückgibt. APP_NAME ist Ihr Anwendungsname. FILENAME ist der Name, den Sie in Ihrem Anwendungscode für die Datenbank angeben.
quelle
Sie können auch überprüfen, ob Ihre IDE über ein Dienstprogramm wie die DDMS-Perspektive von Eclipse verfügt, mit dem Sie das Verzeichnis durchsuchen und / oder Dateien zum und vom Emulator oder einem gerooteten Gerät kopieren können.
quelle
Definieren Sie Ihren Datenbanknamen wie folgt:
Und Sie können Ihre Datenbank sehen in:
quelle
Nicht fest codieren "/ sdcard /"; Verwenden Sie stattdessen Environment.getExternalStorageDirectory (). getPath ()
quelle
Nicht Hardcode Pfad wie
//data/data/<Your-Application-Package-Name>/databases/<your-database-name>
. Nun, es funktioniert in den meisten Fällen, aber dieses funktioniert nicht auf Geräten, auf denen das Gerät mehrere Benutzer unterstützen kann. Der Weg kann wie sein//data/user/10/<Your-Application-Package-Name>/databases/<your-database-name>
. Mögliche Lösung hierfür ist die Verwendungcontext.getDatabasePath(<your-database-name>)
.quelle