我有以下代码,它给出了如下运行时错误.为什么?
try{
String myPath = DB_PATH + DB_NAME;
mDB = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READONLY);
}catch(SQLiteException e){}
Run Code Online (Sandbox Code Playgroud)
运行时错误:
: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
Run Code Online (Sandbox Code Playgroud)
Ste*_*teD 24
确保表名称android_metadata
在那里,使用列名称locale
,您可以插入en_US作为值locale
.
或者更确切地说执行此sql语句:
CREATE TABLE "android_metadata" ("locale" TEXT DEFAULT 'en_US');
Run Code Online (Sandbox Code Playgroud)
编辑:如果使用SQLiteDatabase.NO_LOCALIZED_COLLATORS标志调用openDatabase(),则不需要使用此表,否则您将需要使用此表.
请参见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){}
Run Code Online (Sandbox Code Playgroud)
如果使用写入权限打开数据库,将创建android_metadata表.