使用sqlite报SQLiteReadOnlyDatabaseException异常

跑步_跑步 2016-09-08 11:32:54
在使用ContentProvider更新数据库的时候突然报异常了。
android.database.sqlite.SQLiteReadOnlyDatabaseException: attempt to write a readonly database (code 1032)
at android.database.sqlite.SQLiteConnection.nativeExecuteForChangedRowCount(Native Method)
at android.database.sqlite.SQLiteConnection.executeForChangedRowCount(SQLiteConnection.java:732)
at android.database.sqlite.SQLiteSession.executeForChangedRowCount(SQLiteSession.java:754)
at android.database.sqlite.SQLiteStatement.executeUpdateDelete(SQLiteStatement.java:64)
at android.database.sqlite.SQLiteDatabase.updateWithOnConflict(SQLiteDatabase.java:1576)
at android.database.sqlite.SQLiteDatabase.update(SQLiteDatabase.java:1522)

在使用前已经获得相应的权限了:
在provider的update回调里这样使用:
@Override
public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs) {
SqlArguments args = new SqlArguments(uri, selection, selectionArgs);

SQLiteDatabase db = mOpenHelper.getWritableDatabase();
int count = db.update(args.table, values, args.where, args.args);
if (count > 0)
sendNotify(uri);

return count;
}
为什么还是会出错呢,不是每次都毕现。可能有什么原因会引起这种呢?
...全文
3040 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
weixin_40022659 2019-03-25
  • 打赏
  • 举报
回复
引用 10 楼 键盘舞者113 的回复:
纯粹是你monkey触发数据库SQLiteDataBase对象反复创建和销毁导致的,因为这个对象是针对对象线程同步的
那么应该如何在执行中保护数据库对象,让它可以实现反复创建销毁呢?
键盘舞者113 2018-03-22
  • 打赏
  • 举报
回复
纯粹是你monkey触发数据库SQLiteDataBase对象反复创建和销毁导致的,因为这个对象是针对对象线程同步的
lilei_406 2018-03-22
  • 打赏
  • 举报
回复
是否配置了persist属性?
跑步_跑步 2017-06-20
  • 打赏
  • 举报
回复
引用 6 楼 w2498302802 的回复:
楼主 这个问题最后怎么解决的?现在我这边也碰到了
一直没有解决~
w2498302802 2017-06-14
  • 打赏
  • 举报
回复
引用 5 楼 u014788634 的回复:
数据库报SQLiteReadOnlyDatabaseException: attempt to write a readonly database ,我现在也遇到这样的问题,权限都没问题,偶尔出现。无法下手,你解决了么?求教
你解决了么?
w2498302802 2017-06-14
  • 打赏
  • 举报
回复
楼主 这个问题最后怎么解决的?现在我这边也碰到了
七秒_记忆 2017-05-17
  • 打赏
  • 举报
回复
数据库报SQLiteReadOnlyDatabaseException: attempt to write a readonly database ,我现在也遇到这样的问题,权限都没问题,偶尔出现。无法下手,你解决了么?求教
跑步_跑步 2016-09-08
  • 打赏
  • 举报
回复
引用 1 楼 ink_s 的回复:
配置文件里面给予读写权限了吗 是一个可写的Datebase吗
使用monkey测试的时候出现的。平时使用中没出现过
跑步_跑步 2016-09-08
  • 打赏
  • 举报
回复
引用 2 楼 crash163 的回复:
是否可写? 可以尝试在在配置文件里面给予权限 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
权限配置没问题,在update前使用 SQLiteDatabase db = mOpenHelper.getWritableDatabase(); int count = db.update(args.table, values, args.where, args.args); getWritableDatabase也没问题,唯独在db.update的时候出现了问题。并且不是必现的,偶然出现。
网易云捕 2016-09-08
  • 打赏
  • 举报
回复
是否可写? 可以尝试在在配置文件里面给予权限 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

80,472

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧