C# 将现有数据库加载到Universal app
我正在尝试在Universal 8.1应用程序中加载现有数据库文件 我安装了所有必需的软件包,并且正在使用C# 将现有数据库加载到Universal app,c#,sqlite,windows-runtime,windows-8.1,win-universal-app,C#,Sqlite,Windows Runtime,Windows 8.1,Win Universal App,我正在尝试在Universal 8.1应用程序中加载现有数据库文件 我安装了所有必需的软件包,并且正在使用SQLitePCLwrapper 当我尝试使用以下命令打开db文件时: conn = new SQLiteConnection("test.db"); 它正在创建一个新的空数据库。(我的意思是,每个SELECT命令都会失败,没有这样的表错误。所以这不是我的数据库,而是一个新数据库。) 而且 引发此异常: 无法打开数据库文件:ms-appx:///test.db 详细信息:无法打开数据库文件
SQLitePCL
wrapper
当我尝试使用以下命令打开db文件时:
conn = new SQLiteConnection("test.db");
它正在创建一个新的空数据库。(我的意思是,每个SELECT
命令都会失败,没有这样的表错误。所以这不是我的数据库,而是一个新数据库。)
而且
引发此异常:
无法打开数据库文件:ms-appx:///test.db 详细信息:无法打开数据库文件
my test.db位于共享项目的根目录中,构建操作
设置为内容
,复制到输出目录
设置为,如果更新
我不确定我做错了什么。你能帮我吗
- 如果这是一个愚蠢的问题,请接受我的道歉,我是WinRT编程新手
- 有一个关于
sqlite-net
包装器的解决方案,它也适用于SQLitePCL
,如下所示:
总结是,这些包装器在LocalStorage
文件夹中查找数据库。因此,在访问数据库之前,您需要将文件复制到LocalStorage
private async Task CopyDatabase()
{
bool isDatabaseExisting = false;
try
{
StorageFile storageFile = await ApplicationData.Current.LocalFolder.GetFileAsync("people.db");
isDatabaseExisting = true;
}
catch
{
isDatabaseExisting = false;
}
if (!isDatabaseExisting)
{
StorageFile databaseFile = await Package.Current.InstalledLocation.GetFileAsync("people.db");
await databaseFile.CopyAsync(ApplicationData.Current.LocalFolder);
}
}
之后,可以使用以下代码行访问数据库:
conn = new SQLiteConnection("test.db");
然而,问题是我将在phone中存储两个数据库文件实例。我不知道怎么解决这个问题。有人能帮忙吗?人的属性
构建操作。db
必须是内容。如果未设置,则数据库不包括在应用程序中。我应将我的“people.db”放在项目中的何处。。。我应该把它放在资产文件夹中,还是应该为它创建一个自定义文件夹,或者应该放在根文件夹中?任何人都可以帮忙。
conn = new SQLiteConnection("test.db");