如何在UWP中的新SQLiteConnection中传递数据库路径名?

时间:2018-11-05 15:12:23

标签: sqlite uwp

我正在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);

1 个答案:

答案 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

您无法将其设置为DE磁盘。如果您使用了外部数据库,请将db文件复制到本地文件夹。有关更多信息,请参阅此document