Android-getWritableDatabase()与getReadableDatabase()

来源:互联网 发布:淘宝怎样注册小号 编辑:程序博客网 时间:2024/06/05 01:42

getWritableDatabase()与getReadableDatabase()源码是一样的,唯一的区别是:在磁盘满的时候,此时数据库只允许进行读操作。getWritableDatabase()与getReadableDatabase()源码分别是

public SQLiteDatabase getWritableDatabase() {
        synchronized (this) {
            return getDatabaseLocked(true);
        }
    }

public SQLiteDatabase getReadableDatabase() {
        synchronized (this) {
            return getDatabaseLocked(false);
        }
    }

但是getReadableDatabase()先以读写方式打开,若失败,则只读

在getDatabaseLocked(boolean writable)会分别调用 

public void onConfigure(SQLiteDatabase db) {}

public abstract void onCreate(SQLiteDatabase db);//创建

public abstract void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion);或 public void onDowngrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        throw new SQLiteException("Can't downgrade database from version " +
                oldVersion + " to " + newVersion);//升级或降级
    }

 public void onOpen(SQLiteDatabase db) {}//在数据库被打开后调用

0 0
原创粉丝点击