在电话存储中创建的sqlite数据库文件的默认位置在哪里

时间:2018-08-16 09:32:05

标签: android xamarin

有一个针对xamarin代码创建的DBfile,该文件用于Android sqlite数据库的本机android:

    public static string DBFile = Path.Combine(System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal),"Test.db");

 public static void InitializeLocalDB()
        {

            if (!File.Exists(DBFile))
            {
                using (var connection = new SQLiteConnection(DBFile))
                {
                    connection.CreateTable<Model.TestItem>();
                }
            }

模型也已编码。

型号

namespace Test.Model
{
    public class Test
    {
        [PrimaryKey]
        [MaxLength(10)]
        public string Test { get; set; }


    }
}

当我尝试使用文件管理器但找不到文件时,我是否可以知道从android手机中的上述代码创建的数据库文件的默认位置?

2 个答案:

答案 0 :(得分:1)

文件“ test.db”将位于应用程序的沙箱中,因此通常无法访问(除非您为模拟器使用了root用户的设备或非生产映像)

在Android上,此:

System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal)

映射到(当然要调整您的软件包名称):

/data/user/0/com.sushihangover.someApp/files/Test.db

答案 1 :(得分:0)

/data/data/<Your-Application-Package-Name>/databases/<your-database-name>

如他们在this post中所说。

在物理设备(而不是仿真器)中,问题在于,有时取决于电话,您无法访问该文件夹。 例如,我有一个普通的Android平板电脑,没有root。如果该应用程序处于Debug(未发布)状态,则可以从Android Studio设备资源管理器访问该文件夹。

有时候无法以这种方式访问​​它,例如在某些三星手机(它说run-as package is unknown)中,所以我使用adb和this other post中描述的方法。

编辑:抱歉,我没有意识到您在询问Xamarin。无论如何,我会从Android Studio设备文件资源管理器中保留图像,以防万一它可以帮助您。

enter image description here

enter image description here

希望有帮助。