SQLite
 sql >> Base de données >  >> RDS >> SQLite

SQLite a renvoyé un code d'erreur de 14

C'est peut-être un peu tard, mais j'espère que cela aidera quiconque rencontre ce problème (puisque je ne trouve pas de solution définitive).

Je pense connaître la raison de cette cause (du moins pour mon cas). En regardant dans le DDMS --> Explorateur de fichiers , vous vous rendriez compte que le dossier de base de données (/data/data//databases/) n'existe pas, c'est pourquoi l'application ne peut pas créer le fichier de base de données dans ce dossier inexistant. Si vous pouvez créer un dossier de bases de données d'une manière ou d'une autre, vous pouvez éviter ce problème.

Parce que je suis paresseux, j'ai juste utilisé le dossier /data/data//files/ quand je suis en mode émulateur. Vous pouvez obtenir le répertoire des fichiers en utilisant ceci :

context.getFilesDir().getPath()

Cela a fonctionné à merveille pour moi dans l'émulateur.

J'espère que cela aidera quelqu'un.

Au cas où vous voudriez voir du code :

String dbFilename = "example.db";
try
{       
    File databaseFile = getDatabasePath(dbFilename);        
        SQLiteDatabase _db = SQLiteDatabase.openOrCreateDatabase(databaseFile);
} catch (Exception e)
{
    String databasePath =  getFilesDir().getPath() +  "/" + dbFilename;
    File databaseFile = new File(databasePath); 
    _db = SQLiteDatabase.openOrCreateDatabase(databaseFile);
}

EDIT :J'ai essayé de me connecter à Facebook (mon application a une intégration FB) sur le dossier Emulator et /databases est apparu après cela (et a persisté). Je ne sais pas ce qui s'est passé, mais il est possible de créer ce dossier d'une manière ou d'une autre. Quelque chose pour un autre expert ici pour faire la lumière.