我正在尝试将本地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上不起作用,它在我的模拟器上不起作用。它说它无法找到路径。
我做错了什么?
提前致谢。
答案 0 :(得分:3)
我知道这是一个老话题,但旧答案有一个错字。工作语法应为:
string path = Path.Combine(System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal), "DatabaseName.txt");
答案 1 :(得分:1)
我使用以下代码:
string path = Path.Combine(System.Enviroment.GetFolderPath(System.Enviroment.SpecialFolder.Personal), "data.txt");
我认为应该像你想要的那样写入内部存储
答案 2 :(得分:0)
来自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 tutorial
public static Database Database
{
get
{
if (database == null)
{
database = new Database(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "people.db3"));
}
return database;
}
}