Ошибка доступа к содержимому внешнего файла SQLite
у меня есть следующий код, он дает ошибку времени выполнения, как показано ниже. Почему?
try{
String myPath = DB_PATH + DB_NAME;
mDB = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READONLY);
}catch(SQLiteException e){}
Во Время Выполнения Ошибка:
:sqlite returned: error code = 1, msg = no such table: android_metadata
:SELECT locale FROM android_metadata failed
:Failed to setLocale() when constructing, closing the database
:android.database.sqlite.SQLiteException: no such table: android_metadata
3 ответов
убедитесь, что имя таблицы android_metadata
есть, с именем столбца locale
, вы можете вставить en_US в качестве значения для locale
.
или, скорее, выполните эту инструкцию sql:
CREATE TABLE "android_metadata" ("locale" TEXT DEFAULT 'en_US');
Edit: если вы вызываете openDatabase () с помощью SQLiteDatabase.No_localized_collators флаг, вам не нужно будет иметь эту таблицу, иначе вам нужно будет иметь эту таблицу вокруг.
посмотреть setLocale ().
при открытии БД только для чтения и ее еще не созданной используйте NO_LOCALIZED_COLLATORS.
try{
String myPath = DB_PATH + DB_NAME;
mDB = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READONLY+ SQLiteDatabase.NO_LOCALIZED_COLLATORS);
}catch(SQLiteException e){}
таблица android_metadata будет создана, если вы откроете базу данных с разрешениями на запись.
звонок openDatabase() с журнала.Флаг NO_LOCALIZED_COLLATORS,это то, что я сделал, когда я встретил проблему в прошлый раз...