0

我使用“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,只需 . 如果我想在 Program-Directory 中打开一个数据库是没有问题的:

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

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

var dbPath = "C:\\Users\\xxxxxx\\db.sqlite";

然后出现“无法打开数据库文件”错误。为什么?这里我使用的是 C#,通常我使用 C++,但是对于这个问题,我相信这并不重要;)

4

2 回答 2

6

您不能选择文件系统上的任意文件。有关详细信息,请参见此处

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

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

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

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

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

私有网络客户端服务器

以及至少一项互联网和公共网络功能:

InternetClient InternetClientServer

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

企业认证

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

于 2012-08-31T18:35:46.763 回答
1

在 Windows Metro 应用程序中...它仅支持应用程序的沙盒属性。

所以你不能使用

var dbPath = "C:\\Users\\xxxxxx\\db.sqlite";

U 只能将数据存储在本地存储或应用程序安装目录中。

请避免使用任何其他路径。不起作用 。

于 2013-01-29T11:11:57.607 回答