Android、ICSでSQLiteを使用しています。更新すると、SQLiteReadOnlyDatabaseException
. で作成したので、それは奇妙でしたSQLiteOpenHelper.getWritableDatabase()
。また、更新が発生する直前にデータベースが読み取り専用であるかどうかをテストしましたmyDB.isReadonly()
. この例外は Gingerbread では発生しません。Androidバージョン間で異なるバージョンのsqliteと関係があると思われます。
データベースを作成するためのコードは次のとおりです。
protected static class DBHelper extends SQLiteOpenHelper {
DBHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(CreateStatements.CREATE_MOVIES);
...
}
public class DBAdapter {
public static final String PACKAGE_NAME =
protected DBHelper dbHelper;
protected Context context;
protected SQLiteDatabase myDB;
public CreateStatements statement;
public DBAdapter(Context context) {
this.context = context;
}
public void open() throws SQLException {
dbHelper = new DBHelper(context);
myDB = dbHelper.getWritableDatabase();
myDB.setLockingEnabled(false);
}
public void close() {
myDB.close();
}
...
}