我在 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();
}
...
}