我在android中创建了一个
sqlite
数据库,我可以在我的代码中查询它,但我在文件系统/sdcard上找不到它。
我已经检查了其他SO问题,它不在
data/data/package-name...
我确实看到我的应用程序上的一个数据条目占用了 52kb 空间,所以它就在那里,此外,当我再次运行该应用程序时,它不会触发
OnCreate
意味着它已经拥有数据库。
我的手机已root,并且我正在使用定制的果冻豆ROM,它可以很好地满足所有意图和目的。
有什么想法吗?
代码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();
}
在我已root的手机中,它位于:
/data/data/<your_app_package_name>/databases/<database_name>
现实生活中的例子:
/data/data/com.my.package/databases/mydb.db
它就在那里。您无法在 Android 设备中访问它的唯一原因是该文件夹是私有的,无法使用传统方法查看,操作系统会保护该文件夹,并且该文件夹(及其内容,例如您的数据库)只能由特定的人使用申请。
如果您想查看它,请运行模拟器,在那里运行您的应用程序,转到 DDMS 视图,执行
/data/data/packageName/databases
,它就在那里。如果您无权访问 DDMS,请使用以下 ADB Shell 命令:$ adb pull /data/data/packageName/databases/yourDBFilename.db
致电
Context.getDatabasePath
会给你明确的答案
Android中的数据库默认存储在“data/data/yourPackageName/databases/”中
如果您使用的是Android Studios,DDMS位于“工具”-“Android”-“Android设备监视器”中。 使用 DDMS 来查找它,就像在 Eclipse 中所做的那样。