繁体   English   中英

SQLite 内存数据库不适用于 Microsoft Store

[英]SQLite in-memory database not working with Microsoft Store

我正在编写一个创建和使用(临时)内存中 SQLite 数据库的应用程序。 我的本地调试/发布副本以及 ClickOnce 版本工作正常,但是当我使用从 Microsoft Store 部署/下载的版本时,我收到unable to open database file错误。

这是我的连接字符串:

Data Source=InMemoryDB;Mode=Memory;Cache=Shared;

我想这可能与 SQlite 在某处的磁盘上创建一个文件然后因为它位于受保护的文件夹中而无法访问它有关? 但是我不知道如何指定(更改)它,因为我使用的是内存数据库。

正如怀疑的那样,隐含地,即使这是一个内存数据库,SQLite 仍然需要在某处创建一个虚拟文件以进行共享访问。 它将Data Source参数隐式视为此文件的路径。 如果未指定完整路径,它会将其视为文件名并尝试写入本地文件夹。

对于 Windows 应用商店,应用程序没有本地文件夹的写入权限,因此无法创建此文件。 因此,解决方案是指定临时文件的完整路径,而不仅仅是InMemoryDB

public static string tempDBFile = Path.GetTempFileName();
...
var connString = $"Data Source={tempDBFile};Mode=Memory;Cache=Shared;";

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM