Android数据库SQLite-初识

SQLite,是一款轻型的关系型数据库.,包含在很小的C库中。

遵守ACID数据库事务四要素:
1、原子性。

事务的原子性是指事务是一个不可分割的工作单位,这组操作要么全部发生,否则全部不发生。

2、一致性。

在事务开始以前,被操作的数据的完整性处于一致性的状态,事务结束后,被操作的数据的完整性也必须处于一致性状态。

3、隔离性。

事务隔离性要求系统必须保证事务不受其他并发执行的事务的影响。

4、持久性。

一个事务一旦成功提交,它对数据库的改变必须是永久的,即便是数据库发生故障也应该不回对其产生任何影响。


SQLite在Android中的使用:

怎么获取数据库对象?

一、基于Context上下文对象来获取数据库对象。

二、直接创建数据库对象SQLiteDatabase。

三、基于SQLiteOpenHelper数据库操作帮助类来获取数据库对象

其实三种方式最终目的都是拿到数据库的操作对象SQLiteDatabase来实现数据的增删改查操作,而且三种方式最终都是调用SQLiteDatabase.openDatabase方法来获取数据库对象。

第一种:

    //数据库名
    private static final String DATA_BASE_NAME = "test.db";
    //表名
    private static final String TABLE_NAME = "person";
    //列名
    private static final String TABLE_COLUMN = "name";
    //展示的分隔符
    private static final String ITEM_SPLIT = "、";

    private void getDB() {
        SQLiteDatabase mDataBase = openOrCreateDatabase(DATA_BASE_NAME, MODE_PRIVATE, null);
    }

第二种:

SQLiteDatabase mDatabase = SQLiteDatabase.openDatabase(DATA_BASE_NAME, null, MODE_PRIVATE);


第三种:

SQLiteOpenHelper sqLiteOpenHelper = new SQLiteOpenHelper(context, name, null, 1) {
            @Override
            public void onCreate(SQLiteDatabase sqLiteDatabase) {

            }

            @Override
            public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {

            }
        };
SQLiteDatabase mDataBase= sqLiteOpenHelper.getWritableDatabase();

通过上面三种方式获取到数据库对象以后,通过调用SQLiteDatabase提供的insert、delete、update、query等方法就能操作数据库了。而且提供了执行数据库操作语句的方法execSQL来操作数据库。


怎么操作数据库对象?

一、通过execSQL来操作数据库:

private void sqlOperation(String args) {
        //增加一条数据
        mDataBase.execSQL("INSERT INTO "+ TABLE_NAME +" VALUES (NULL, ?)", new Object[]{args});
        //删除一条数据
        mDataBase.execSQL("DELETE FROM " + TABLE_NAME + " WHERE " + TABLE_COLUMN + "='" + args + "'");
        //更新数据
        mDataBase.execSQL("UPDATE " + TABLE_NAME + " set " + TABLE_COLUMN + " ='" + args + "'"
                + " WHERE " + TABLE_COLUMN + " ='" + args + "'");
        //查询数据
        Cursor cursor = mDataBase.rawQuery("SELECT * FROM " + TABLE_NAME, new String[]{});
        int index = 0;
        while (cursor.moveToNext()){
            index += 1;
            HashMap map = new HashMap<>();
            map.put(TABLE_COLUMN, index + ITEM_SPLIT + cursor.getString(cursor.getColumnIndex(TABLE_COLUMN)));
            mListItem.add(map);
        }
        cursor.close();
}

二、通过数据库对象提供的方法直接操作:

private void sqlOpration(String args){
        //增加一条数据
        ContentValues contentValues = new ContentValues();
        contentValues.put(TABLE_COLUMN, args);
        mDataBase.insert(TABLE_NAME, null, contentValues);
        //删除一条数据
        mDataBase.delete(TABLE_NAME, TABLE_COLUMN + " == ?", new String[]{args});
        //更新数据
        mDataBase.update(TABLE_NAME, contentValues, TABLE_COLUMN + " == ?", new String[]{});
    }

虽然操作数据库的方式不同,但是殊途同归最终调用的都是SQLiteStatement获取的SQLiteSession并添加到SQLiteConnectionPool中来执行操作。


有没有简单易用的?

SQLiteOpenHelper帮助类提供了一些简单高效的方式来帮助我们操作数据库,上面提到了通过继承这个帮助类来获取数据库对象,同时也提供了一些回调方法比如onCreat(数据库第一次被创建的时候)、onUpgrade(数据库升级的时候)、onDowngrade(数据库降级)、onOpen(数据库已经被打开)、onConfigure(数据库的配置信息,比如用来确定数据库的配置信息是否正确之类的)来监听数据库的一些状态。

你可能感兴趣的:(SQLite)