我的android数据库在哪里?

时间:2013-10-07 14:46:33

标签: android database android-sqlite

我在eclipse上创建了一个android应用程序,我创建了一个数据库(仅用于测试),我必须在最终应用程序中使用该数据库来获取和存储来自应用程序的信息。但最重要的是,我必须能够与其他人共享该数据库。我无法找到要共享的文件。我不太了解sql,但我认为它们以.db格式存储,所以我试图搜索它但无法找到该文件。我可以看到条目而不是文件。

我也在我的手机上运行应用程序而我仍然找不到数据库文件,而是找到了其他应用程序的数据库文件,例如whatsapp。

那么,我的数据库在哪里?

2 个答案:

答案 0 :(得分:2)

您可以在设备的内部存储中找到您创建的数据库:

/data/data/<app-package-name>/databases/<database-name>

您需要是root用户才能使用文件资源管理器查看该文件。

答案 1 :(得分:2)

无论您使用的是模拟器还是真实设备,都可以使用 DDMS Window-&gt; open perspective-&gt; DDMS )来导航数据库。

在DDMS中,有一个文件资源管理器(如果不可见, window-&gt; show view-&gt;文件资源管理器)。

现在,您可以/data/data/<app-package-name>/databases/<database-name>

导航到数据库

现在,要保存文件,请单击文件资源管理器右上角的保存按钮。

<强>更新

实际上,在表行插入之前,我看不到数据库。如果需要包含预定义数据的静态表,可以在创建表时进行插入。例如: - 参考onCreate()方法 - &gt;

public class DbHelper extends SQLiteOpenHelper {

SQLiteDatabase db;

public DbHelper(Context context) {
    super(context, "pics.db", null, 1);
}

@Override
public void onCreate(SQLiteDatabase db) {
    db.execSQL("create table picture(_id INTEGER PRIMARY KEY,pics varchar(20))");
    db.execSQL("insert into picture values(1001,'one.jpg')");
    db.execSQL("insert into picture values(1002,'two.jpg')");

}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    // TODO Auto-generated method stub

}
public long insert(ContentValues cv) {
    db = getWritableDatabase();
    long l=db.insert("picture", null, cv);
    db.close();
    return l;

}
public Cursor getAllValues() {
    db=getReadableDatabase();
    Cursor cr=db.query("picture", null, null, null, null, null, "_id");
        db.close();
        return cr;
    }

}