gpt4 book ai didi

android - 在内部存储 ANDROID 上创建 SQLite 数据库

转载 作者:行者123 更新时间:2023-11-29 16:55:35 26 4
gpt4 key购买 nike

我正在尝试在我的 Xamarin 应用程序的内部存储上创建一个 SQLIte 数据库。我正在为至少 3 个应用程序与共享数据互连的离线环境创建一个系统。因此,如果一个应用程序创建了一些数据,另一个应用程序应该能够读取该数据。

数据库项目是一个可移植类库,我计划将其包含在所有三个应用程序中。

我的DbHelper如下:

public Database()
{
string folder = "/data/data/Anchor.Main";
_dbPath = System.IO.Path.Combine(folder, "Anchor.db");

try
{
if (!System.IO.Directory.Exists(folder))
{
System.IO.Directory.CreateDirectory(folder); //Getting error here
}

_connection = new SQLiteConnection(_dbPath);
_connection.CreateTable<Orders>();
_connection.CreateTable<Items>();

}
catch(Exception ex)
{ }

}

我收到错误提示

Access to the path "/data/data/Anchor.Main" is denied.

以下是堆栈跟踪

at System.IO.Directory.CreateDirectoriesInternal (System.String path) [0x0004b] in <3fd174ff54b146228c505f23cf75ce71>:0 at System.IO.Directory.CreateDirectory (System.String path) [0x00075] in <3fd174ff54b146228c505f23cf75ce71>:0 at anchorapp.db.Helper.Database..ctor () [0x0002e]

我知道这是因为权限,但我需要设置什么权限才能从 PCL 写入内部存储?

最佳答案

您正在访问“/data/data/Anchor.Main”的Android系统文件夹。您的应用程序内部存储将位于

/data/data/@PACKAGE_NAME@/files

可以使用以下代码获取存放数据库的文件夹:

// Equal to /data/data/@PACKAGE_NAME@/files
var homePath = Environment.GetFolderPath(Environment.SpecialFolder.Personal);
_dbPath = System.IO.Path.Combine(homePath, "Anchor.db");
_connection = new SQLiteConnection(_dbPath);

关于android - 在内部存储 ANDROID 上创建 SQLite 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45099030/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com