Reading/Writing SQLite3 数据库到 OneDrive with WinRT 8.1
Reading/Writing SQLite3 database to OneDrive with WinRT 8.1
我在使 SQLite3 数据库与 OneDrive 一起工作时遇到问题。我没有问题 运行 来自 ApplicationData.Current.RoamingFolder
的数据库,但是当我尝试添加 FolderPicker
以允许用户指定一个文件夹来存储数据库时,我一直得到 CannotOpen
来自 SQLite 的错误。
我正在为文件夹添加一个令牌到 FutureAccessList
,如下所示:
// give us a consent to use the folder
var folderPicker = new FolderPicker();
folderPicker.FileTypeFilter.Add("*");
_currentFolder = await folderPicker.PickSingleFolderAsync();
// after that, we can store the folder for future reuse
var pickedFolderToken = StorageApplicationPermissions.FutureAccessList.Add(_currentFolder);
ApplicationData.Current.LocalSettings.Values.Add("FolderTokenSettingsKey", pickedFolderToken);
正如我所说,应用程序在使用 RoamingFolder
时运行良好,但我试图将数据库存储在远程存储上,以便在多个设备之间保持同步。
我最初认为 RoamingFolder
会在多个设备之间同步(只要是登录的是同一个 Microsoft 帐户),但事实并非如此,所以我试图获得它可以与 SkyDrive 或其他一些远程存储服务一起使用。
SQLite3 数据库配置为在数据库不存在时创建该数据库,我已经尝试了两种情况,结果相同 - CannotOpen
在任何一种情况下。有人知道 WinRT 8.1 应用程序是否允许这样做吗?我的另一个选择是将数据库从复制到 RoamingFolder
并从应用程序访问该副本,然后在写入数据库时复制回。
SQLite 使用本机 Windows 文件系统 API (Win32),但选择器(如 FolderPicker
)和 FutureAccessList
仅使用代理文件系统 API(Windows.Storage
).没有办法同时混合两者。
但是您的漫游文件夹中的项目 应该 被复制到具有相同 Microsoft 帐户的其他设备,尽管这不是即时的。你等了多久才看到它出现?文件有多大?您是否阅读了 this topic 和 MSDN 上的相关项目?
否则,是的,您可以将文件从代理位置复制到应用程序的存储空间,然后修改它,然后在关闭后再次将其复制回来。
我在使 SQLite3 数据库与 OneDrive 一起工作时遇到问题。我没有问题 运行 来自 ApplicationData.Current.RoamingFolder
的数据库,但是当我尝试添加 FolderPicker
以允许用户指定一个文件夹来存储数据库时,我一直得到 CannotOpen
来自 SQLite 的错误。
我正在为文件夹添加一个令牌到 FutureAccessList
,如下所示:
// give us a consent to use the folder
var folderPicker = new FolderPicker();
folderPicker.FileTypeFilter.Add("*");
_currentFolder = await folderPicker.PickSingleFolderAsync();
// after that, we can store the folder for future reuse
var pickedFolderToken = StorageApplicationPermissions.FutureAccessList.Add(_currentFolder);
ApplicationData.Current.LocalSettings.Values.Add("FolderTokenSettingsKey", pickedFolderToken);
正如我所说,应用程序在使用 RoamingFolder
时运行良好,但我试图将数据库存储在远程存储上,以便在多个设备之间保持同步。
我最初认为 RoamingFolder
会在多个设备之间同步(只要是登录的是同一个 Microsoft 帐户),但事实并非如此,所以我试图获得它可以与 SkyDrive 或其他一些远程存储服务一起使用。
SQLite3 数据库配置为在数据库不存在时创建该数据库,我已经尝试了两种情况,结果相同 - CannotOpen
在任何一种情况下。有人知道 WinRT 8.1 应用程序是否允许这样做吗?我的另一个选择是将数据库从复制到 RoamingFolder
并从应用程序访问该副本,然后在写入数据库时复制回。
SQLite 使用本机 Windows 文件系统 API (Win32),但选择器(如 FolderPicker
)和 FutureAccessList
仅使用代理文件系统 API(Windows.Storage
).没有办法同时混合两者。
但是您的漫游文件夹中的项目 应该 被复制到具有相同 Microsoft 帐户的其他设备,尽管这不是即时的。你等了多久才看到它出现?文件有多大?您是否阅读了 this topic 和 MSDN 上的相关项目?
否则,是的,您可以将文件从代理位置复制到应用程序的存储空间,然后修改它,然后在关闭后再次将其复制回来。