0
votes

I've a database in my assets folder. I've tried the below code to load the database.

public SQLiteDatabase db;

@Override
protected void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    db = SQLiteDatabase.openOrCreateDatabase(new File("file:///android_asset/e2b.db"), null);      
    Toast.makeText(getBaseContext(), "Error" + db.isOpen(), Toast.LENGTH_LONG).show();
}

I've just tried to open it. Hasn't used it yet. But, when I run my app the window doesn't open with below popup(error)

Unfortunately, MyDBApp has stopped

The LogCat is below.

05-12 13:10:01.673 16004 16004 I art Late-enabling -Xcheck:jni 05-12 13:10:01.877 16004 16004 W System ClassLoader referenced unknown path: /data/app/com.aashakil.e2b2edict-1/lib/arm 05-12 13:10:02.227 16004 16004 D AccessibilityManager getInstance() new sInstance = android.view.accessibility.AccessibilityManager@ec2dd0e, context = com.aashakil.e2b2edict.MainActivity@f26932f, userId = 0 05-12 13:10:02.288 16004 16004 E SQLiteLog (14) cannot open file at line 31278 of [2ef4f3a5b1] 05-12 13:10:02.288 16004 16004 E SQLiteLog (14) os_unix.c:31278: (2) open(//file:/android_asset/e2b.db) - 05-12 13:10:02.331 16004 16004 E SQLiteDatabase Failed to open database 'file:/android_asset/e2b.db'. 05-12 13:10:02.331 16004 16004 E SQLiteDatabase android.database.sqlite.SQLiteCantOpenDatabaseException: unknown error (code 14): Could not open database 05-12 13:10:02.331 16004 16004 E SQLiteDatabase at android.database.sqlite.SQLiteConnection.nativeOpen(Native Method) 05-12 13:10:02.331 16004 16004 E SQLiteDatabase at android.database.sqlite.SQLiteConnection.open(SQLiteConnection.java:207) 05-12 13:10:02.331 16004 16004 E SQLiteDatabase at android.database.sqlite.SQLiteConnection.open(SQLiteConnection.java:191) 05-12 13:10:02.331 16004 16004 E SQLiteDatabase at android.database.sqlite.SQLiteConnectionPool.openConnectionLocked(SQLiteConnectionPool.java:463) 05-12 13:10:02.331 16004 16004 E SQLiteDatabase at android.database.sqlite.SQLiteConnectionPool.open(SQLiteConnectionPool.java:185) 05-12 13:10:02.331 16004 16004 E SQLiteDatabase at android.database.sqlite.SQLiteConnectionPool.open(SQLiteConnectionPool.java:177) 05-12 13:10:02.331 16004 16004 E SQLiteDatabase at android.database.sqlite.SQLiteDatabase.openInner(SQLiteDatabase.java:806) 05-12 13:10:02.331 16004 16004 E SQLiteDatabase at android.database.sqlite.SQLiteDatabase.open(SQLiteDatabase.java:791) 05-12 13:10:02.331 16004 16004 E SQLiteDatabase at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:694) 05-12 13:10:02.331 16004 16004 E SQLiteDatabase at android.database.sqlite.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:709) 05-12 13:10:02.331 16004 16004 E SQLiteDatabase at android.database.sqlite.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:702) 05-12 13:10:02.331 16004 16004 E SQLiteDatabase at com.aashakil.e2b2edict.MainActivity.onCreate(MainActivity.java:20) 05-12 13:10:02.331 16004 16004 E SQLiteDatabase at android.app.Activity.performCreate(Activity.java:6251) 05-12 13:10:02.331 16004 16004 E SQLiteDatabase at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1110) 05-12 13:10:02.331 16004 16004 E SQLiteDatabase at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2370) 05-12 13:10:02.331 16004 16004 E SQLiteDatabase at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2477) 05-12 13:10:02.331 16004 16004 E SQLiteDatabase at android.app.ActivityThread.-wrap11(ActivityThread.java) 05-12 13:10:02.331 16004 16004 E SQLiteDatabase at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1345) 05-12 13:10:02.331 16004 16004 E SQLiteDatabase at android.os.Handler.dispatchMessage(Handler.java:102) 05-12 13:10:02.331 16004 16004 E SQLiteDatabase at android.os.Looper.loop(Looper.java:148) 05-12 13:10:02.331 16004 16004 E SQLiteDatabase at android.app.ActivityThread.main(ActivityThread.java:5452) 05-12 13:10:02.331 16004 16004 E SQLiteDatabase at java.lang.reflect.Method.invoke(Native Method) 05-12 13:10:02.331 16004 16004 E SQLiteDatabase at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:762) 05-12 13:10:02.331 16004 16004 E SQLiteDatabase at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:652) 05-12 13:10:02.331 16004 16004 D AndroidRuntime Shutting down VM 05-12 13:10:02.333 16004 16004 E AndroidRuntime FATAL EXCEPTION: main 05-12 13:10:02.333 16004 16004 E AndroidRuntime Process: com.aashakil.e2b2edict, PID: 16004 05-12 13:10:02.333 16004 16004 E AndroidRuntime java.lang.RuntimeException: Unable to start activity ComponentInfo{com.aashakil.e2b2edict/com.aashakil.e2b2edict.MainActivity}: android.database.sqlite.SQLiteCantOpenDatabaseException: unknown error (code 14): Could not open database 05-12 13:10:02.333 16004 16004 E AndroidRuntime at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2417) 05-12 13:10:02.333 16004 16004 E AndroidRuntime at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2477) 05-12 13:10:02.333 16004 16004 E AndroidRuntime at android.app.ActivityThread.-wrap11(ActivityThread.java) 05-12 13:10:02.333 16004 16004 E AndroidRuntime at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1345) 05-12 13:10:02.333 16004 16004 E AndroidRuntime at android.os.Handler.dispatchMessage(Handler.java:102) 05-12 13:10:02.333 16004 16004 E AndroidRuntime at android.os.Looper.loop(Looper.java:148) 05-12 13:10:02.333 16004 16004 E AndroidRuntime at android.app.ActivityThread.main(ActivityThread.java:5452) 05-12 13:10:02.333 16004 16004 E AndroidRuntime at java.lang.reflect.Method.invoke(Native Method) 05-12 13:10:02.333 16004 16004 E AndroidRuntime at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:762) 05-12 13:10:02.333 16004 16004 E AndroidRuntime at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:652) 05-12 13:10:02.333 16004 16004 E AndroidRuntime Caused by: android.database.sqlite.SQLiteCantOpenDatabaseException: unknown error (code 14): Could not open database 05-12 13:10:02.333 16004 16004 E AndroidRuntime at android.database.sqlite.SQLiteConnection.nativeOpen(Native Method) 05-12 13:10:02.333 16004 16004 E AndroidRuntime at android.database.sqlite.SQLiteConnection.open(SQLiteConnection.java:207) 05-12 13:10:02.333 16004 16004 E AndroidRuntime at android.database.sqlite.SQLiteConnection.open(SQLiteConnection.java:191) 05-12 13:10:02.333 16004 16004 E AndroidRuntime at android.database.sqlite.SQLiteConnectionPool.openConnectionLocked(SQLiteConnectionPool.java:463) 05-12 13:10:02.333 16004 16004 E AndroidRuntime at android.database.sqlite.SQLiteConnectionPool.open(SQLiteConnectionPool.java:185) 05-12 13:10:02.333 16004 16004 E AndroidRuntime at android.database.sqlite.SQLiteConnectionPool.open(SQLiteConnectionPool.java:177) 05-12 13:10:02.333 16004 16004 E AndroidRuntime at android.database.sqlite.SQLiteDatabase.openInner(SQLiteDatabase.java:806) 05-12 13:10:02.333 16004 16004 E AndroidRuntime at android.database.sqlite.SQLiteDatabase.open(SQLiteDatabase.java:791) 05-12 13:10:02.333 16004 16004 E AndroidRuntime at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:694) 05-12 13:10:02.333 16004 16004 E AndroidRuntime at android.database.sqlite.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:709) 05-12 13:10:02.333 16004 16004 E AndroidRuntime at android.database.sqlite.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:702) 05-12 13:10:02.333 16004 16004 E AndroidRuntime at com.aashakil.e2b2edict.MainActivity.onCreate(MainActivity.java:20) 05-12 13:10:02.333 16004 16004 E AndroidRuntime at android.app.Activity.performCreate(Activity.java:6251) 05-12 13:10:02.333 16004 16004 E AndroidRuntime at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1110) 05-12 13:10:02.333 16004 16004 E AndroidRuntime at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2370)

3
AIDE has logcat too, so please provide logs, they're necessary to find a solution - Valentun
@valentun How can I see the logcat of AIDE ? - user9083424

3 Answers

1
votes

file:///android_asset URLs only work with WebView, not with file operations in general.

To use a database file from assets you need to copy it to the filesystem. You can use sqlite-asset-helper to do so.

0
votes

Try to use different openOrCreateDatabase method overload variant:

 openOrCreateDatabase("DatabaseName", MODE_PRIVATE, null); 
0
votes

Instead of calling openOrCreateDatabase inside fragment, you need to call it

In Activity :

SQLiteDatabase db = openOrCreateDatabase("DATABASE",android.content.Context.MODE_PRIVATE ,null);

The correct way in Fragment:

SQLiteDatabase db = getActivity().openOrCreateDatabase("DATABASE",android.content.Context.MODE_PRIVATE ,null);**