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();
}
In meinem gerooteten Telefon ist es in: /data/data/<your_app_package_name>/databases/<database_name>
beispiel/Daten/Daten/com.my.package/databases/mydb
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
Wenn Sie Context.getDatabasePath
aufrufen, erhalten Sie die endgültige Antwort
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.
Datenbanken in Android werden standardmäßig in "data/data/yourPackageName/database /" gespeichert