对于我的示例Uwp应用程序,我想在Publisher缓存文件夹的SqLightDataBase中创建sqlite db,例如: C:\ Users \\ AppData \ Local \ Publishers \ temp_folder \ SqLightDataBase,因为我希望从同一发布者处复制uwp应用程序才能使用它。 我指的是:
根据以上所述:sqlite文件“是在首次调用时即时创建的,并存储在应用程序的本地数据存储区中。” 我的示例代码:
string path = string.Empty;
try
{
path = Path.Combine(ApplicationData.Current.GetPublisherCacheFolder("SqLightDataBase").Path, "sqliteSample.db");
}
catch (Exception e)
{
Console.WriteLine(e.InnerException);
}
var sqliteConnectionString = "DataSource=" + path;
using (SqliteConnection db = new SqliteConnection(sqliteConnectionString))
{
db.Open();
String tableCommand = "CREATE TABLE IF NOT " +
"EXISTS MyTable (Primary_Key INTEGER PRIMARY KEY, " +
"Text_Entry NVARCHAR(2048) NULL)";
SqliteCommand createTable = new SqliteCommand(tableCommand, db);
createTable.ExecuteReader();
}
Package.appmanifest
<Extension Category="windows.publisherCacheFolders">
<PublisherCacheFolders>
<Folder Name="SqLightDataBase"/>
</PublisherCacheFolders>
</Extension>
解决方案有两个项目:
两个目标均为Win 10版本1803,以及最低Win 10 Creators Update
Nuget软件包:
错误
尝试db.Open();
时,我得到:
SQLite错误14:“无法打开数据库文件”。
我尝试在打开数据库文件之前创建它,但是当前的API不提供此选项。我也可以将db文件从本地复制到Publisher文件夹,但这不是理想的解决方案。 有什么方法可以强制SqliteConnection在PublisherCacheFolder中而不是在本地文件中“即时”创建db文件?
答案 0 :(得分:0)
我通过将SqLightDataBase文件夹(具有我的示例UWP应用程序的所有权限)从垃圾箱恢复到PublisherCacheFolder来解决了这个问题。