【问题标题】:Open extern SQLite-Database in a Windows 8 Metro-App?在 Windows 8 Metro-App 中打开 extern SQLite-Database?
【发布时间】:2012-08-31 18:27:13
【问题描述】:

我使用“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++,但是对于这个问题我相信它并不重要;)

【问题讨论】:

  • 为什么你会选择使用外部路径?我的建议是使用 Visual Studio 来验证您实际尝试使用的路径是否正确。这表明您的研究很少,这可以在您花费 5 分钟调试代码后轻松解决。
  • 您是否可以从资源管理器访问此路径?您只能访问当前用户的目录...作为“用户相关”应用程序。
  • 这段代码使用 Windows.Storage.ApplicationData.Current.LocalFolder.Path 是有原因的,因为这是 Metro 应用程序可以实际访问的少数几个位置之一。
  • 如果我想将数据库保存在 Dropbox-Folder 中以便自动同步,例如,该怎么办?这不可能?
  • @Berschi 您的 Dropbox 文件夹位于何处?如果您的保管箱是我在下面列出的位置之一,那么您可以在那里保存,否则您可以让用户使用 FileSavePicker 选择要保存的位置。 msdn.microsoft.com/en-us/library/windows/apps/…

标签: c# c++ sqlite windows-8 microsoft-metro


【解决方案1】:

您不能选择文件系统上的任意文件。详情请见here

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

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

此外,您的应用可以访问已连接的某些文件 默认设备。如果您的应用程序使用AutoPlay Device extension 在用户连接设备时自动启动,这是一个选项, 像相机或 USB 拇指驱动器一样,连接到他们的系统。您的应用程序的文件 可以访问仅限于通过指定的特定文件类型 应用清单中的文件类型关联声明。当然, 您还可以通过以下方式访问可移动设备上的文件和文件夹 调用文件选择器(使用FileOpenPickerFolderPicker)和 让用户选择文件和文件夹供您的应用访问。学习 Quickstart: Accessing files with file pickers.中如何使用文件选择器

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

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

PrivateNetworkClientServer

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

InternetClient InternetClientServer

如果适用,域凭据功能:

EnterpriseAuthentication

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

【讨论】:

  • 这能回答你的问题吗?
【解决方案2】:

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

所以你不能用

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

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

请避免使用任何其他路径。它不会工作。

【讨论】:

  • 我尝试使用 FilePicker,但仍然无法在文档库中打开 SQLite 文件。我不应该可以吗?
  • @kya baat hai,完美答案:) :)
  • @ScottNimrod 是不可能的
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多