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

aelbi1ox  于 2023-08-01  发布在  SQLite
关注(0)|答案(2)|浏览(129)

我找到的每个示例都为您创建数据库,然后让您创建表并在代码中填充它们。但是,我的问题是,我想在别处创建和填充数据库(SQLiteStudio),然后将其包含在我的应用程序中。
我感觉到(通过一般的感觉……无论我一直在看什么。我们称之为文档),您应该将数据库复制到Environment.SpecialFolder.Personal目录。因此,我的工作流程是将数据库作为资源包含在内,然后将其复制到Environment.SpecialFolder.Personal目录。是这样吗?有没有人简洁而权威地写下这些(而不是松散的文章集)?
我不希望有两个相同数据库的副本,但如果这是其他人都在做的事情,那么...好吧。
我无法在以下任何网页上找到答案。

prdp8dxp

prdp8dxp1#

既然你标记了pcl,你有没有试着把它当作一个嵌入式资源?您只需创建一个文件夹,放入数据库,并将构建操作设置为嵌入式资源。您可以通过链接到数据库所在的路径,通过SQLite库访问该文件。
https://learn.microsoft.com/en-us/xamarin/xamarin-forms/app-fundamentals/files?tabs=vswin

cl25kdpy

cl25kdpy2#

如果您正在寻找.Net Maui解决方案:
1.将您的文件作为MauiAsset放入资源/原始/其他
1.消费:
在本例中,我们检查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);
        });

字符串

相关问题