外部 SQLite 文件内容访问错误

发布于 2024-10-20 09:42:23 字数 509 浏览 1 评论 0原文

我有以下代码,它给出了如下运行时错误。为什么?

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

I've the following code, it gives a run time error as below. Why?

try{
String myPath = DB_PATH + DB_NAME;  
mDB = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READONLY);
}catch(SQLiteException e){} 

Runtime Error:

: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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

夏尔 2024-10-27 09:42:23

确保表名 android_metadata 存在,并具有列名 locale,您可以插入 en_US 作为 locale 的值。

或者执行此 sql 语句:

CREATE TABLE "android_metadata" ("locale" TEXT DEFAULT 'en_US');

编辑:如果您使用 SQLiteDatabase.NO_LOCALIZED_COLLATORS 标志调用 openDatabase(),则不需要此表,否则您将需要此表。

请参阅 setLocale()

Make sure the table name android_metadata is there, with a column name locale, you could insert en_US as value for locale.

Or rather execute this sql statement:

CREATE TABLE "android_metadata" ("locale" TEXT DEFAULT 'en_US');

Edit: If you call openDatabase() with SQLiteDatabase.NO_LOCALIZED_COLLATORS flag, you would not need to have this table, else you will need to have this table around.

See setLocale().

鲜肉鲜肉永远不皱 2024-10-27 09:42:23

当打开只读数据库且尚未创建该数据库时,请使用 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 表。

When open read only db and its not already created, use 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 table will be created if you open the database with write permissions.

宣告ˉ结束 2024-10-27 09:42:23

使用 SQLiteDatabase.NO_LOCALIZED_COLLATORS 标志调用 openDatabase() ,这是我上次遇到问题时所做的...

call openDatabase() with SQLiteDatabase.NO_LOCALIZED_COLLATORS flag,this is what i did when i met the problem last time...

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文