2 votes

Impossible de créer une table SQLite sur Android

J'ai suivi ce tutoriel dans son intégralité, sur la manière de stocker des données dans une base de données locale. Sur iOS tout fonctionne bien, malheureusement sur Android j'obtiens une exception lors de la création d'une table dans mon fichier de base de données. La méthode pour créer la table est la suivante :

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

Et ma classe personnalisée pour obtenir le chemin de la base de données sur Android est la suivante :

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;
     }
}

Voici l'erreur que je reçois de SQLite :

Impossible d'ouvrir le fichier de la base de données : /data/user/0/com.companyname.XX/files/Calculation.db3 (CannotOpen)

J'ai essayé de cibler plusieurs API différentes, j'ai essayé de nettoyer et de reconstruire ma solution, et j'ai essayé de réinstaller les paquets NuGet SQLite-net-pcl dans toute la solution. Rien ne fonctionne.

J'ai lu que cela avait à voir avec les autorisations, mais je trouve étrange que le tutoriel officiel de Microsoft ne couvre pas ce problème, s'il existe.

4voto

Diego Rafael Souza Points 3371

Vous devez vérifier la déclaration (et les autorisations) Android pour l'écriture et la lecture sur le stockage externe sur votre appareil ou émulateur.

Cela doit être suffisant.

Assurez-vous de supprimer bin y obj des dossiers, une solution de nettoyage et de reconstruction pour se débarrasser de toutes les données mises en cache à la compilation de l'application.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X