Не удается создать таблицу SQLite на Android - PullRequest
0 голосов
/ 24 апреля 2018

Я полностью следовал этому учебнику о том, как хранить данные в локальной базе данных. На iOS все работает нормально, к сожалению, на Android я получаю исключение при создании таблицы в моем файле базы данных. Метод создания таблицы:

public CalcDatabase(string dbPath)
{
  database = new SQLiteAsyncConnection(dbPath);
  database.CreateTableAsync<Calculation>().Wait();
}

А мой пользовательский класс для получения пути к базе данных на Android выглядит следующим образом:

public class LocalFileHelper : IFileHelper
{
     public string GetLocalFilePath(string filename)
     {
         var path = Environment.GetFolderPath(Environment.SpecialFolder.Personal);
         path = Path.Combine(path, filename);

         if(!Directory.Exists(path))
         {
            Directory.CreateDirectory(path);
         }

         return path;
     }
}

Это ошибка, которую я получаю из SQLite:

Не удалось открыть файл базы данных: /data/user/0/com.companyname.XX/files/Calculation.db3 (CannotOpen)

Я пытался настроить таргетинг на несколько различных API, я пытался очистить и перестроить свое решение и попытался переустановить пакеты SQLite-net-pcl NuGet по всему решению. Ничего не работает.

Я прочитал, что это связано с разрешениями, но я все же нахожу странным, что официальный учебник Microsoft не раскрывает это, если бы это было что-то.

1 Ответ

0 голосов
/ 25 апреля 2018

Необходимо проверить декларацию разрешений Android (и разрешения) для записи и чтения во внешнее хранилище на вашем устройстве или эмуляторе.

Этого должно быть достаточно.

Обязательно удалите папки bin и obj, очистите и перестройте решение, чтобы избавиться от любых кэшированных данных при компиляции приложения.

...