SQLiteDatabase.openOrCreateDatabase не работает - PullRequest
0 голосов
/ 12 мая 2018

У меня есть база данных в папке с активами. Я попробовал приведенный ниже код для загрузки базы данных.

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

Я только что попытался открыть его. Еще не использовал это. Но когда я запускаю свое приложение, окно не открывается с всплывающим окном (ошибка)

К сожалению, MyDBApp остановился

LogCat ниже.

05-12 13: 10: 01.673 16004 16004 Искусство позднего включения -Xcheck: jni 05-12 13: 10: 01.877 16004 16004 W System ClassLoader ссылается на неизвестный путь: /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) не может открыть файл в строке 31278 из [2ef4f3a5b1] 05-12 13: 10: 02.288 16004 16004 E SQLiteLog (14) os_unix.c: 31278: (2) открыть (// файл: /android_asset/e2b.db) - 05-12 13: 10: 02.331 16004 16004 E SQLiteDatabase Не удалось открыть базу данных 'file: /android_asset/e2b.db'. 05-12 13: 10: 02.331 16004 16004 E SQLiteDatabase android.database.sqlite.SQLiteCantOpenDatabaseException: неизвестная ошибка (код 14): не удалось открыть базу данных 05-12 13: 10: 02.331 16004 16004 E База данных SQLite в android.database.sqlite.SQLiteConnection.nativeOpen (собственный метод) 05-12 13: 10: 02.331 16004 16004 E База данных SQLite в android.database.sqlite.SQLiteConnection.open (SQLiteConnection.java:207) 05-12 13: 10: 02.331 16004 16004 E База данных SQLite в android.database.sqlite.SQLiteConnection.open (SQLiteConnection.java:191) 05-12 13: 10: 02.331 16004 16004 E База данных SQLite в android.database.sqlite.SQLiteConnectionPool.openConnectionLocked (SQLiteConnectionPool.java:463) 05-12 13: 10: 02.331 16004 16004 E База данных SQLite в android.database.sqlite.SQLiteConnectionPool.open (SQLiteConnectionPool.java:185) 05-12 13: 10: 02.331 16004 16004 E База данных SQLite в android.database.sqlite.SQLiteConnectionPool.open (SQLiteConnectionPool.java:177) 05-12 13: 10: 02.331 16004 16004 E База данных SQLite в android.database.sqlite.SQLiteDatabase.openInner (SQLiteDatabase.java:806) 05-12 13: 10: 02.331 16004 16004 E База данных SQLite в android.database.sqlite.SQLiteDatabase.open (SQLiteDatabase.java:791) 05-12 13: 10: 02.331 16004 16004 E База данных SQLite в android.database.sqlite.SQLiteDatabase.openDatabase (SQLiteDatabase.java:694) 05-12 13: 10: 02.331 16004 16004 E База данных SQLite в android.database.sqlite.SQLiteDatabase.openOrCreateDatabase (SQLiteDatabase.java:709) 05-12 13: 10: 02.331 16004 16004 E База данных SQLite в android.database.sqlite.SQLiteDatabase.openOrCreateDatabase (SQLiteDatabase.java:702) 05-12 13: 10: 02.331 16004 16004 E База данных SQLite на com.aashakil.e2b2edict.MainActivity.onCreate (MainActivity.java:20) 05-12 13: 10: 02.331 16004 16004 E База данных SQLite на android.app.Activity.performCreate (Activity.java:6251) 05-12 13: 10: 02.331 16004 16004 E База данных SQLite на android.app.Instrumentation.callActivityOnCreate (Instrumentation.java:1110) 05-12 13: 10: 02.331 16004 16004 E База данных SQLite на android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2370)05-12 13: 10: 02.331 16004 16004 E База данных SQLite на android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:2477) 05-12 13: 10: 02.331 16004 16004 E База данных SQLite на android.app.ActivityThread.-wrap11 (ActivityThread.java) 05-12 13: 10: 02.331 16004 16004 E База данных SQLite на android.app.ActivityThread $ H.handleMessage (ActivityThread.java:1345) 05-12 13: 10: 02.331 16004 16004 E База данных SQLite на android.os.Handler.dispatchMessage (Handler.java:102) 05-12 13: 10: 02.331 16004 16004 E База данных SQLite на android.os.Looper.loop (Looper.java:148) 05-12 13: 10: 02.331 16004 16004 E База данных SQLite на android.app.ActivityThread.main (ActivityThread.java:5452) 05-12 13: 10: 02.331 16004 16004 E База данных SQLite на java.lang.reflect.Method.invoke (собственный метод) 05-12 13: 10: 02.331 16004 16004 E База данных SQLite на com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:762) 05-12 13: 10: 02.331 16004 16004 E База данных SQLite на com.android.internal.os.ZygoteInit.main (ZygoteInit.java:652) 05-12 13: 10: 02.331 16004 16004 D AndroidRuntime Завершение работы виртуальной машины 05-12 13: 10: 02.333 16004 16004 E AndroidRuntime ФАТАЛЬНОЕ ИСКЛЮЧЕНИЕ: основное 05-12 13: 10: 02.333 16004 16004 E Процесс AndroidRuntime: com.aashakil.e2b2edict, PID: 16004 05-12 13: 10: 02.333 16004 16004 E AndroidRuntime java.lang.RuntimeException: невозможно запустить действие код 14): не удалось открыть базу данных 05-12 13: 10: 02.333 16004 16004 E AndroidRuntime на android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2417) 05-12 13: 10: 02.333 16004 16004 E AndroidRuntime на android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:2477) 05-12 13: 10: 02.333 16004 16004 E AndroidRuntime на android.app.ActivityThread.-wrap11 (ActivityThread.java) 05-12 13: 10: 02.333 16004 16004 E AndroidRuntime на android.app.ActivityThread $ H.handleMessage (ActivityThread.java:1345) 05-12 13: 10: 02.333 16004 16004 E AndroidRuntime на android.os.Handler.dispatchMessage (Handler.java:102) 05-12 13: 10: 02.333 16004 16004 E AndroidRuntime на android.os.Looper.loop (Looper.java:148) 05-12 13: 10: 02.333 16004 16004 E AndroidRuntime на android.app.ActivityThread.main (ActivityThread.java:5452) 05-12 13: 10: 02.333 16004 16004 E AndroidRuntime на java.lang.reflect.Method.invoke (собственный метод) 05-12 13: 10: 02.333 16004 16004 E AndroidRuntime на com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:762) 05-12 13: 10: 02.333 16004 16004 E AndroidRuntime на com.android.internal.os.ZygoteInit.main (ZygoteInit.java:652) 05-12 13: 10: 02.333 16004 16004 E AndroidRuntime Причина: android.database.sqlite.SQLiteCantOpenDatabaseException: неизвестная ошибка (код 14): не удалось открыть базу данных 05-12 13: 10: 02.333 16004 16004 E AndroidRuntime на android.database.sqlite.SQLiteConnection.nativeOpen (собственный метод) 05-12 13: 10: 02.333 16004 16004 E AndroidRuntime на android.database.sqlite.SQLiteConnection.open (SQLiteConnection.java:207)05-12 13: 10: 02.333 16004 16004 E AndroidRuntime на android.database.sqlite.SQLiteConnection.open (SQLiteConnection.java:191) 05-12 13: 10: 02.333 16004 16004 E AndroidRuntime на android.database.sqlite.SQLiteConnectionPool.openConnectionLocked (SQLiteConnectionPool.java:463) 05-12 13: 10: 02.333 16004 16004 E AndroidRuntime на android.database.sqlite.SQLiteConnectionPool.open (SQLiteConnectionPool.java:185) 05-12 13: 10: 02.333 16004 16004 E AndroidRuntime на android.database.sqlite.SQLiteConnectionPool.open (SQLiteConnectionPool.java:177) 05-12 13: 10: 02.333 16004 16004 E AndroidRuntime на android.database.sqlite.SQLiteDatabase.openInner (SQLiteDatabase.java:806) 05-12 13: 10: 02.333 16004 16004 E AndroidRuntime на android.database.sqlite.SQLiteDatabase.open (SQLiteDatabase.java:791) 05-12 13: 10: 02.333 16004 16004 E AndroidRuntime на android.database.sqlite.SQLiteDatabase.openDatabase (SQLiteDatabase.java:694) 05-12 13: 10: 02.333 16004 16004 E AndroidRuntime в android.database.sqlite.SQLiteDatabase.openOrCreateDatabase (SQLiteDatabase.java:709) 05-12 13: 10: 02.333 16004 16004 E AndroidRuntime в android.database.sqlite.SQLiteDatabase.openOrCreateDatabase (SQLiteDatabase.java:702) 05-12 13: 10: 02.333 16004 16004 E AndroidRuntime на com.aashakil.e2b2edict.MainActivity.onCreate (MainActivity.java:20) 05-12 13: 10: 02.333 16004 16004 E AndroidRuntime на android.app.Activity.performCreate (Activity.java:6251) 05-12 13: 10: 02.333 16004 16004 E AndroidRuntime на android.app.Instrumentation.callActivityOnCreate (Instrumentation.java:1110) 05-12 13: 10: 02.333 16004 16004 E AndroidRuntime на android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2370)

Ответы [ 2 ]

0 голосов
/ 12 мая 2018

file:///android_asset URL-адреса работают только с WebView, но не с файловыми операциями в целом.

Чтобы использовать файл базы данных из ресурсов, необходимо скопировать его в файловую систему.Вы можете использовать sqlite-asset-helper для этого.

0 голосов
/ 12 мая 2018

Попробуйте использовать другой вариант перегрузки openOrCreateDatabase метода:

 openOrCreateDatabase("DatabaseName", MODE_PRIVATE, null); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...