zoukankan      html  css  js  c++  java
  • getWritableDatabase()与getReadableDatabase()的区别:

    getWritableDatabase取得的实例不是仅仅具有写的功能,而是同时具有的功能同样的

    getReadableDatabase取得的实例也是具对数据库进行读和写的功能。

    两者的区别在于

    getWritableDatabase取得的实例是以读写的方式打开数据库,如果打开的数据库磁盘满了,此时只能读不能写,此时调用了getWritableDatabase的实例,那么将会发生错误(异常)

    getReadableDatabase取得的实例是先调用getWritableDatabase以读写的方式打开数据库,如果数据库的磁盘满了,此时返回打开失败,继而用getReadableDatabase的实例以只读的方式去打开数据库

    具体使用:

    /** 空间不够存储的时候设为只读
    * @throws SQLiteException
    */
    public void open() throws SQLiteException
    {
    dbOpenHelper = new DBOpenHelper(xContext, DB_NAME, null,DB_VERSION);
    try
    {
    db = dbOpenHelper.getWritableDatabase();
    }
    catch (SQLiteException e)
    {
    db = dbOpenHelper.getReadableDatabase();
    }
    }

    /**
    * 静态Helper类,用于建立、更新和打开数据库
    */
    private static class DBOpenHelper extends SQLiteOpenHelper
    {
    /*
    * 手动创建表的SQL命令
    CREATE TABLE peopleinfo
    (_id integer primary key autoincrement,
    name text not null,
    age integer,
    height float);*/
    private static final String DB_CREATE=
    "CREATE TABLE "+DB_TABLE
    +" ("+KEY_ID+" integer primary key autoincrement, "
    +KEY_NAME+" text not null, "
    +KEY_AGE+" integer,"+
    KEY_HEIGHT+" float);";
    public DBOpenHelper(Context context, String name,
    CursorFactory factory, int version)
    {
    super(context, name, factory, version);
    }

    /*
    * 函数在数据库第一次建立时被调用,
    * 一般用来用来创建数据库中的表,并做适当的初始化工作
    */
    @Override
    public void onCreate(SQLiteDatabase db)
    {
    db.execSQL(DB_CREATE);
    Log.i(DB_ACTION, "onCreate");
    }

    /*
    * SQL命令。onUpgrade()函数在数据库需要升级时被调用,
    * 通过调用SQLiteDatabase对象的execSQL()方法,
    * 执行创建表的一般用来删除旧的数据库表,并将数据转移到新版本的数据库表中
    */
    @Override
    public void onUpgrade(SQLiteDatabase _db, int oldVersion, int newVersion)
    {

    //为了简单起见,并没有做任何的的数据转移,而仅仅删除原有的表后建立新的数据库表
    _db.execSQL("DROP TABLE IF EXISTS "+DB_TABLE);
    onCreate(_db);
    Log.i(DB_ACTION, "Upgrade");
    }

    }

  • 相关阅读:
    Building a Space Station POJ
    Networking POJ
    POJ 1251 Jungle Roads
    CodeForces
    CodeForces
    kuangbin专题 专题一 简单搜索 POJ 1426 Find The Multiple
    The Preliminary Contest for ICPC Asia Shenyang 2019 F. Honk's pool
    The Preliminary Contest for ICPC Asia Shenyang 2019 H. Texas hold'em Poker
    The Preliminary Contest for ICPC Asia Xuzhou 2019 E. XKC's basketball team
    robotparser (File Formats) – Python 中文开发手册
  • 原文地址:https://www.cnblogs.com/dantefung/p/3873156.html
Copyright © 2011-2022 走看看