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");
    }

    }

  • 相关阅读:
    防止SQL注入攻击的注意事项【转载】
    javascript小技巧之一【获取各种尺寸】
    Web.config中maxRequestLength后面数字的单位问题
    javascript小技巧之二【对象、元素、事件】
    我的博客
    初学测试用例
    初识我的博客
    自动生成小学四则运算题目
    【Yii】数据库读写方法:AR模型和DAO方法
    【阅读】看懂财经新闻的第一本书
  • 原文地址:https://www.cnblogs.com/dantefung/p/3873156.html
Copyright © 2011-2022 走看看