SQLite Android cannot open database file

后端 未结 5 1285
夕颜
夕颜 2021-01-18 13:34

Edit: I tried this on my phone and it works, can anyone tell me why it does not work on an emulator?

I am trying to open a database on android, but it is throwing an

5条回答
  •  佛祖请我去吃肉
    2021-01-18 14:27

    This may be a little late, but hope this helps for whoever gets this problem (since I can't find a definitive solution around).

    I think I know the reason for this cause (at least for my case). Looking in the DDMS --> File Explorer, you'd realize that the Database Folder (/data/data//databases/) does not exist, which is why the application cannot create the database file in that non-existent folder. If you can create a databases folder in some manner, you can avoid this problem.

    Because I'm lazy, I just used the /data/data//files/ folder when I'm in Emulator mode. You can get the files dir using this:

    context.getFilesDir().getPath()
    

    This worked beautifully for me in the Emulator.

    Hope this helps someone.

    In case you want to see some 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:

    I tried logging into Facebook (my app has FB integration) on the Emulator and /databases folder appeared after that (and persisted). Not sure what happened, but it's possible to create that folder somehow. Something for another expert around here to shed light on.

提交回复
热议问题