Android数据库SQLite-初识

来源:互联网 发布:实木浴室柜怎么样知乎 编辑:程序博客网 时间:2024/06/13 01:36

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<String, Object> 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(数据库的配置信息,比如用来确定数据库的配置信息是否正确之类的)来监听数据库的一些状态。

1 0
原创粉丝点击