【问题标题】:Redefining application data folder in uwp app在 uwp 应用程序中重新定义应用程序数据文件夹
【发布时间】:2019-12-05 03:01:26
【问题描述】:

我正在编写一个 UWP 应用程序来与 SQLite 数据库交互。我实现了一个数据方案,用于在特定目录中创建新文件。

我发现的所有关于路径的信息都在下面的代码中。它在 %username%\AppData\Local...\Appname_t07g111c25az6\folder_defined_in_code 中创建文件。但我想在应用程序根文件夹(C:/Projects/AppName/src/Assets)中创建它。

Settings.cs

static public readonly string DatabasePath = "Database";
static public readonly string DatabaseName = $"{DB_NAME}.db";
static public readonly string DatabasePattern = $"{DB_NAME}.pattern.db";
static public readonly string DatabaseFileName = Path.Combine(DatabasePath, DatabaseName);
static public readonly string DatabasePatternFileName = Path.Combine(DatabasePath, DatabasePattern);
static public readonly string DatabaseUrl = $"{DB_BASEURI}/{DatabaseName}";
public readonly string SQLiteConnectionString = $"Data Source={DatabaseFileName}";

Startup.cs

private static async Task EnsureSQLiteDatabaseAsync()
        {
            var localFolder = ApplicationData.Current.LocalFolder; ;
            var databaseFolder = await localFolder.CreateFolderAsync(AppSettings.DatabasePath, CreationCollisionOption.OpenIfExists);

            if (await databaseFolder.TryGetItemAsync(AppSettings.DatabaseName) == null)
            {
                var sourceFile = await databaseFolder.GetFileAsync(AppSettings.DatabasePattern);
                var targetFile = await databaseFolder.CreateFileAsync(AppSettings.DatabaseName, CreationCollisionOption.ReplaceExisting);
                await sourceFile.CopyAndReplaceAsync(targetFile);
            }
        }

【问题讨论】:

    标签: c# uwp


    【解决方案1】:

    您不能将读写 SQLite 数据库放在安装文件夹中。 SQLite 数据库仅在 ApplicationData 中工作。

    UWP 包(您的“应用程序根文件夹”)在安装后是只读的,因此您不能创建或修改存储在那里的数据库,也不能在那里编写新的数据库。 ApplicationData 文件夹(您当前创建它的位置)专为应用程序特定的读写数据而设计,是推荐的位置。

    此外,ApplicationData 是默认 SQLite 实现无需修改即可使用的唯一读写位置。您可以在其他地方授予应用访问权限(例如,使用 broadFileSystemAccess 功能),但默认情况下 SQLite 不会使用正确的 API 来使用该访问权限。

    您似乎遵循了一种标准模式,即在应用程序包中包含数据库的只读模板,然后在第一次需要时将其复制到 ApplicationData。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-08-01
      • 2017-01-22
      • 1970-01-01
      • 1970-01-01
      • 2020-03-26
      • 1970-01-01
      • 1970-01-01
      • 2018-05-23
      相关资源
      最近更新 更多