簡體   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