在Xamarin Android中存储SQLite数据库的路径

本文关键字:数据库 路径 SQLite 存储 Xamarin Android | 更新日期: 2023-09-27 18:24:05

我正在尝试将本地SQLite数据库存储在设备的内部存储中。当我使用模拟器时,这个:

static string dbName = "totems.sqlite";
string dbPath = Path.Combine (Android.OS.Environment.ExternalStorageDirectory.ToString (), dbName);

工作良好。但当我尝试在Nexus 5上调试时,它没有工作,因为它没有外部存储。我搜索了它的存储位置,这样它也可以在我的Nexus上运行。我将其替换为:

static string dbName = "totems.sqlite";
string dbPath = Path.Combine ("/data/data/com.companyname.totem/databases/", dbName);

但现在它在我的Nexus 5上不起作用,在我的模拟器上也不起作用。它说找不到路。

我做错了什么?

提前谢谢。

在Xamarin Android中存储SQLite数据库的路径

我知道这是一个旧的线程,但旧的答案有一个拼写错误。工作语法应该是:

string path = Path.Combine(System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal), "DatabaseName.txt");

Im使用以下代码:

string path = Path.Combine(System.Enviroment.GetFolderPath(System.Enviroment.SpecialFolder.Personal), "data.txt");

我认为应该像您想要一样写入内部存储

来自docs.com

LocalApplicationData:用作公用的目录用于由当前用户使用的应用程序特定数据的存储库,非漫游用户。

Personal:用作的公共存储库的目录文件。此成员相当于MyDocuments。

从这个我使用:

var db_directory = Path.Combine(System.Environment.GetFolderPath(System.Environment.SpecialFolder.LocalApplicationData),"databases"))
var db_path = Path.Combine(db_directory,"data.db");

同样来自此示例(XF)
docs.com xamarin教程

public static Database Database
        {
            get
            {
                if (database == null)
                {
                    database = new Database(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "people.db3"));
                }
                return database;
            }
        }