我正在uwp中使用Sqlite数据库,我能够成功创建数据库,而在我的应用程序的本地文件夹中没有任何问题。
但是当我尝试在其他地方创建时,出现错误
"SQLite.Net.SQLiteException: 'Could not open database file: E:\Users\PC3\Pictures\Abcd\MyDbFolder\mydb.sqlite (CannotOpen)"
我使用通过文件夹选择器获得的StorageFolder.Path获得了路径字符串,然后也将其添加到FutureAccessList中。虽然没有用。由于New db连接方法需要路径,因此我很努力地在构造函数中使用路径。
//DbPathFromFAList = foldername.path (got from FutureAccess List) + mydbName.sqlite;
sqliteConn = new SQLiteConnection(new SQLitePlatformWinRT(), DbPathFromFAList);
答案 0 :(得分:0)
如罗伯在thread中所说,
SQLite使用路径而不是流,并绕过文件代理。它的数据库必须位于应用程序数据中,因此该应用程序具有直接的读/写权限或安装目录为只读。
即使您已经使用D:
来获得完整文件的许可,也无法将E:
SQLiteConnection
之类的路径字符串参数传递给FilePicker
方法。
通常,我们使用LocalFolder
存储可以直接访问的数据库文件。
DbFilePath = Path.Combine(ApplicationData.Current.LocalFolder.Path, "Sqlite.db");
sqliteConn = new SQLiteConnection(new SQLitePlatformWinRT(), DbFilePath);
指定的路径位于:
C:\Users[Your User Name]\AppData\Local\Packages[Your Package Name]\LocalState
您无法将其设置为D
或E
磁盘。如果您使用了外部数据库,请将db文件复制到本地文件夹。有关更多信息,请参阅此document。