Andoid数据存储之SQLite数据库
SQLite是一个嵌入式的并且是一个轻量级的数据库;
SQLite数据库支持大部分SQL语法, 允许使用SQL语句操作数据库, 其本质是一个文件, 不需要安装启动;
SQLite数据库打开只是打开了一个文件的读写流, 如果有大数据量读写, 需要高并发存储, 那么就不应该使用SQLite;
Android系统提供了SQLiteDatabase代表一个数据库,一旦应用程序获得了代表指定数据库的SQLiteDatabase对象,接下来就可以通过SQLiteDatabase对象来管理. 操作数据库了。SQLiteDatabase对象也为我们提供了一些方法来操作数据库:
execSQL(String sql) 执行一条SQL语句,没有返回值 execSQL(String sql,Object[] bindArgs) 执行带占位符的SQL语句,没有返回值 insert(String table,String nullColumnHack,ContentValues values) 插入一条记录 update(String table,ContentValues values,String whereClause,String[] whereArgs) 修改记录 delete(String table,String whereClause,String[] whereArgs) 删除一条记录 query(String table,String[] columns,String selection,String[] selectionArgs,String groupBy,String having,String orderBy) 查询一条记录 query(String table,String[] columns,String selection,String[] selectionArgs,String groupBy,String having,String orderBy,String limit)
执行查询,limit用于控制最多查询几条记录 query(boolean distinct,String table,String[] columns,String selection,String[] selectionArgs,String groupBy,String having,String orderBy,String limit) 执行查询,distinct是控制是否去除重复值 rawQuery(String sql,String[] selectionArgs) 执行带占位符的sql查询,带返回值 beginTransaction(); 开始事务 endTransaction(); 结束事务 close() 关闭数据库
上面的查询方法都返回一个Cursor对象,Android中的Cursor类似于JDBC的ResultSet,Cursor同样提供了如下方法来移动查询结果的记录指针.Cursor游标常用方法:
getCount() 获得总的数据项数 isFirst() 判断是否第一条记录 isLast() 判断是否最后一条记录 moveToFirst() 移动到第一条记录 moveToLast() 移动到最后一条记录 move(int offset) 移动到指定记录 moveToNext() 移动到下一条记录 moveToPrevious() 移动到上一条记录 getColumnIndexOrThrow(String columnName) 根据列名称获得列索引 getInt(int columnIndex) 获得指定列索引的int类型值 getString(int columnIndex) 获得指定列缩影的String类型值
在实际开发中采用SQLiteDatabase的方法打开数据库十分烦琐,所以android为我们提供了SQLiteOpenHelper帮助类。通常都会继承SQLiteOpenHelper开发子类,并通过该子类的getReadableDatabase() getWritableDatabase()方法打开数据库。
下面通过一个实例来说明SQLiteOpenHelper帮助类的具体操作: