Как передать имя пути базы данных в новом SQLiteConnection в UWP? - PullRequest
0 голосов
/ 05 ноября 2018

Я работаю с Sqlite db в uwp, я могу успешно создать db без каких-либо проблем в локальной папке моего приложения.

Но когда я пытаюсь создать в других местах, я получаю ошибку как

"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 голосов
/ 06 ноября 2018

Как сказал Роб в этой теме ,

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. Если вы использовали внешнюю базу данных, скопируйте файл базы данных в локальную папку. для более подробной информации см. документ .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...