sql >> Base de Datos >  >> RDS >> SQLite

SQLite devolvió un código de error de 14

Esto puede ser un poco tarde, pero espero que esto ayude a quien tenga este problema (ya que no puedo encontrar una solución definitiva).

Creo saber el motivo de esta causa (al menos para mi caso). Buscando en el DDMS --> Explorador de archivos , se daría cuenta de que la Carpeta de base de datos (/data/data//databases/) no existe, por lo que la aplicación no puede crear el archivo de base de datos en esa carpeta inexistente. Si puede crear una carpeta de bases de datos de alguna manera, puede evitar este problema.

Como soy perezoso, acabo de usar la carpeta /data/data//files/ cuando estoy en modo emulador. Puede obtener el directorio de archivos usando esto:

context.getFilesDir().getPath()

Esto funcionó muy bien para mí en el emulador.

Espero que esto ayude a alguien.

En caso de que quieras ver algún código:

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

EDITAR:Intenté iniciar sesión en Facebook (mi aplicación tiene integración de FB) en el emulador y la carpeta de bases de datos apareció después de eso (y persistió). No estoy seguro de lo que sucedió, pero es posible crear esa carpeta de alguna manera. Algo para que otro experto por aquí arroje luz.