在Windows 8 Metro-App中打开extern SQLite-Database?

Ber*_*chi 0 c# c++ sqlite microsoft-metro windows-8

我使用"Sqlite for Windows Runtime"和sqlite-net(正如http://timheuer.com/blog/archive/2012/08/07/updated-how-to-using-sqlite-from-windows-所述 - store-apps.aspx)开发Windows 8 Metro-App,只是.如果我想在程序目录中打开数据库是没有问题的:

var dbPath = Path.Combine(Windows.Storage.ApplicationData.Current.LocalFolder.Path, "db.sqlite");
using (var db = new SQLite.SQLiteConnection(dbPath)) {
  ...
}
Run Code Online (Sandbox Code Playgroud)

但是当我想使用这样的extern路径时:

var dbPath = "C:\\Users\\xxxxxx\\db.sqlite";
Run Code Online (Sandbox Code Playgroud)

然后"无法打开数据库文件"出现错误.为什么?在这里我使用C#,通常我使用C++,但对于这个问题,我确信它没关系;)

N_A*_*N_A 6

您无法在文件系统上选择任意文件.详情请见此处.

默认情况下,您可以访问以下位置:

  • 应用安装目录
  • 应用数据位置
  • 用户的下载文件夹

此外,默认情况下,您的应用可以访问所连接设备上的某些文件.如果您的应用使用自动播放设备扩展程序在用户将设备(如相机或USB拇指驱动器)连接到其系统时自动启动,则可以选择此选项.您的应用可以访问的文件仅限于通过应用清单中的文件类型关联声明指定的特定文件类型.当然,您还可以通过调用文件选择器(使用FileOpenPickerFolderPicker)并让用户选择要访问的应用程序的文件和文件夹来访问可移动设备上的文件和文件夹.了解如何在快速入门中使用文件选择器:使用文件选择器访问文件.

如果您声明了正确的功能,您还可以访问:

需要以下功能的组合.家庭和工作网络能力:

PrivateNetworkClientServer

至少有一个互联网和公共网络功能:

InternetClient InternetClientServer

并且,如果适用,域凭据功能:

EnterpriseAuthentication

注意您必须向应用清单添加文件类型关联,以声明应用可以在此位置访问的特定文件类型.