在使用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;
    }
为什么还是会出错呢,不是每次都毕现。可能有什么原因会引起这种呢?

解决方案 »

  1.   


    配置文件里面给予读写权限了吗   是一个可写的Datebase吗
      

  2.   

    是否可写?
    可以尝试在在配置文件里面给予权限
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
      

  3.   

    权限配置没问题,在update前使用
    SQLiteDatabase db = mOpenHelper.getWritableDatabase();
            int count = db.update(args.table, values, args.where, args.args);
    getWritableDatabase也没问题,唯独在db.update的时候出现了问题。并且不是必现的,偶然出现。
      

  4.   

    使用monkey测试的时候出现的。平时使用中没出现过
      

  5.   

    数据库报SQLiteReadOnlyDatabaseException: attempt to write a readonly database
    ,我现在也遇到这样的问题,权限都没问题,偶尔出现。无法下手,你解决了么?求教
      

  6.   

    是否配置了persist属性?
      

  7.   

    纯粹是你monkey触发数据库SQLiteDataBase对象反复创建和销毁导致的,因为这个对象是针对对象线程同步的