Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将现有数据库加载到Universal app_C#_Sqlite_Windows Runtime_Windows 8.1_Win Universal App - Fatal编程技术网

C# 将现有数据库加载到Universal app

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 详细信息:无法打开数据库文件

我正在尝试在Universal 8.1应用程序中加载现有数据库文件

我安装了所有必需的软件包,并且正在使用
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");