Среда : Microsoft.Data.Sqlite.Core , SQLitePCLRaw.bundle_winsqlite3 2.0.1 , Windows-10
, VS2019- ver16.3.6
Следующий код работает в моем приложении UWP
для создания файла в папке Downloads в папке Windows 10
, а также для записи в этот файл. Но, как показано в second code block
ниже, когда я делаю то же самое, создавая SQLite
файл, скажем, sqliteSample.db
в папке Downloads
, а затем пытаюсь открыть эту базу данных, она выдает мне ошибку, показанную ниже:
Следующий фрагмент кода работает для создания и записи файла в папке Downloads :
StorageFile file = await Windows.Storage.DownloadsFolder.CreateFileAsync("sample.txt");
Windows.Storage.Pickers.FolderPicker folderPicker = new Windows.Storage.Pickers.FolderPicker
{
SuggestedStartLocation = Windows.Storage.Pickers.PickerLocationId.Downloads
};
folderPicker.FileTypeFilter.Add(".txt");
StorageFolder oPickedFolder = await folderPicker.PickSingleFolderAsync();
if (oPickedFolder != null)
{
//Application now has read/write access to all contents in the picked folder (including other sub-folder contents)
Windows.Storage.AccessCache.StorageApplicationPermissions.FutureAccessList.AddOrReplace("PickedFolderToken", oPickedFolder);
string sSQLDbPath = Path.Combine(oPickedFolder.Path, "sample.txt");
Windows.Storage.StorageFile sampleFile = await oPickedFolder.GetFileAsync("sample.txt");
await Windows.Storage.FileIO.WriteTextAsync(sampleFile, "Swift as a shadow");
}
Следующий фрагмент кода успешно создает файл sqliteSample.db
в Downloadsпапка, но выдает ошибку, показанную ниже при попытке открыть ее :
Примечания : В строке db.Open();
следующего кода возникает ошибка ниже. В режиме отладки в VS2019
я проверил, что переменная sSQLDbPath
имеет правильный путь, и когда я вручную копирую / вставляю этот путь в проводник Windows, я вижу файл sqliteSample.db
в той же подпапкеПапка загрузок, в которой также есть файл sample.txt
, созданный из приведенного выше кода и работающий без ошибок.
Ошибка SQLite 14: «невозможно открыть файл базы данных».
StorageFile file = await Windows.Storage.DownloadsFolder.CreateFileAsync("sqliteSample.db");
Windows.Storage.Pickers.FolderPicker folderPicker = new Windows.Storage.Pickers.FolderPicker
{
SuggestedStartLocation = Windows.Storage.Pickers.PickerLocationId.Downloads
};
folderPicker.FileTypeFilter.Add(".db");
StorageFolder oPickedFolder = await folderPicker.PickSingleFolderAsync();
if (oPickedFolder != null)
{
//Application now has read/write access to all contents in the picked folder (including other sub-folder contents)
Windows.Storage.AccessCache.StorageApplicationPermissions.FutureAccessList.AddOrReplace("PickedFolderToken", oPickedFolder);
string sSQLDbPath = Path.Combine(oPickedFolder.Path, "sqliteSample.db");
using (SqliteConnection db = new SqliteConnection($"Filename={sSQLDbPath}"))
{
db.Open();
String tableCommand = "CREATE TABLE IF NOT " +
"EXISTS MyTable (Primary_Key INTEGER PRIMARY KEY, " +
"Text_Entry NVARCHAR(2048) NULL)";
SqliteCommand createTable = new SqliteCommand(tableCommand, db);
createTable.ExecuteReader();
}
}
С Права доступа к файлам и папкам в папке «Загрузки» :
Пользователь может предоставить другому приложению доступ к вашему файлу, выбрав файл изсредство выбора файлов. Ваше приложение также может использовать средство выбора файлов, чтобы получить доступ к файлам в папке «Загрузки», которые оно не создавало.
Возможности не нужны для создания или доступа к файлам в папке Downloads.
ПРИМЕЧАНИЕ : Этот пост также не помог.