我在android中创建了一个sqlite
数据库,我可以在我的代码中查询它,但我在文件系统/ sdcard上找不到它。
我已经检查了其他SO问题,而不是data/data/package-name...
我确实看到我的应用上的数据条目占用了52kb的空间,所以它在那里,此外当我再次运行应用程序时,它不会触发OnCreate
,这意味着它已经有了数据库。
我的手机已植根了我正在使用一个定制的果冻豆rom,可以满足所有意图和目的。
有什么想法吗?
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();
}
答案 0 :(得分:24)
在我的根电话中,它位于:/data/data/<your_app_package_name>/databases/<database_name>
为例 /data/data/com.my.package/databases/mydb
答案 1 :(得分:10)
答案 2 :(得分:6)
它在那里。您无法在Android设备中访问它的唯一原因是因为该文件夹是私有的,并且无法使用传统方法看到,操作系统保护该文件夹,并且该文件夹(以及它的内容,例如您的数据库)只能由某些文件夹使用应用
如果你想看到它,运行一个模拟器,在那里运行你的应用程序,转到DDMS视图,执行到/data/data/packageName/databases
,它就在那里。如果您无权访问DDMS,请使用此ADB Shell命令:$ adb pull /data/data/packageName/databases/yourDBFilename.db
答案 3 :(得分:4)
致电Context.getDatabasePath
将为您提供明确的答案
答案 4 :(得分:0)
Android中的数据库默认存储在“data / data / yourPackageName / databases /”中
答案 5 :(得分:0)
如果您使用的是Android工作室,则DDMS位于&#34;工具&#34; - &#34; Android&#34; - &#34; Android设备监视器&#34;。 使用DDMS就像在Eclipse中完成它一样。