有没有正确的方法将现有的 SQLite 数据库添加到 Xamarin 项目?

问题描述 投票:0回答:2

我找到的每个示例都会为您创建数据库,然后让您创建表并在代码中填充它们。不过,我的问题是我想在其他地方创建并填充数据库(SQLiteStudio),然后将其包含在我的应用程序中。

我感觉(通过我一直在查看的内容的总体感觉。我们将其称为文档)您应该将数据库复制到

Environment.SpecialFolder.Personal
目录。所以我的工作流程是将数据库作为资源包含在内,然后将其复制到
Environment.SpecialFolder.Personal
目录。是对的吗?有没有人简洁而权威地写下这些内容(而不是松散的文章集)?

我不想拥有同一个数据库的两个副本,但如果其他人都这样做的话......好吧。

我无法在以下任何网页上找到答案。

xamarin sqlite-net sqlite-net-pcl
2个回答
3
投票

自从您标记了 pcl 以来,您是否尝试过将其视为嵌入式资源?您几乎只需创建一个文件夹,放入数据库,然后将构建操作设置为嵌入资源即可。您可以通过链接到数据库所在的路径,通过 SQLite 库访问该文件。

https://learn.microsoft.com/en-us/xamarin/xamarin-forms/app-fundamentals/files?tabs=vswin


2
投票

如果您正在寻找

.Net Maui
解决方案:

  1. 将文件作为 MauiAsset 放入 Resources/Raw/Something
  2. 消费:

在此示例中,我们检查

app.dp3
是否存在,如果不存在,则我们从随资源附带的
prebuilt.db3
创建它。

builder.Services.AddTransient<LocalDatabase>((services) =>
        {
            var filenameDb = Path.Combine(FileSystem.AppDataDirectory, "app.db3");
            if (!File.Exists(filenameDb))
            {
                using var stream = FileSystem.OpenAppPackageFileAsync("Something/prebuilt.db3").GetAwaiter().GetResult();
                using (var memoryStream = new MemoryStream())
                {
                    stream.CopyTo(memoryStream);
                    File.WriteAllBytes(filenameDb, memoryStream.ToArray());
                }
            }
            return new LocalDatabase(filenameDb);
        });
© www.soinside.com 2019 - 2024. All rights reserved.