SQLite数据库
SQLite是一个轻量级数据库,占用资源非常低,在内存中只需要占用几百KB的存储空间
SQLite是遵守ACID的关系型数据库管理系统,ACID是指数据库事务正确执行的四个基本要 素(原子性、隔离性、一致性、持久性)。
SQLite保存数据时,支持NULL(零)、INTEGER(整数)、REAL(浮点数字)、TEXT (字符串文本)和BLOB(二进制对象)五种数据类型。
//创建数据库
public class MyHelper extends SQLiteOpenHelper {
public MyHelper(Context context) {
super(context, "itcast.db", null, 2);
}
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE information(_id INTEGER PRIMARY
KEY AUTOINCREMENT, name VARCHAR(20), price INTEGER)");
}
// 当数据库的版本号增加时调用
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion){
}
}
//添加数据
public void insert(String name,String price) {
SQLiteDatabase db = helper.getWritableDatabase();
ContentValues values = new ContentValues();
values.put("name", name);
values.put("price", price);
long id = db.insert("information",null,values);
db.close();
}
//修改数据
public int update(String name, String price) {
SQLiteDatabase db = helper.getWritableDatabase();
ContentValues values = new ContentValues();
values.put("price", price);
int number = db.update("information", values, " name = ? ", new String[]{name});
db.close();
return number;
}
//删除数据
public int delete(long id){
SQLiteDatabase db = helper.getWritableDatabase();
int number = db.delete("information", "_id=?", new String[]{id+""});
db.close();
return number;
}
//查询数据
public boolean find(long id){
SQLiteDatabase db = helper.getReadableDatabase();
Cursor cursor = db.query("information", null, "_id=?", new
String[]{id+""}, null, null, null);
boolean result = cursor.moveToNext();
cursor.close();
db.close();
return result;
}
//SQLite的事务
PersonSQLiteOpenHelper helper = new PersonSQLiteOpenHelper(getContext());
SQLiteDatabase db = helper.getWritableDatabase();
db.beginTransaction();
try {
db.execSQL("update person set account=account-1000 where name =?",new Object[] { "shab" });
db.execSQL("update person set account=account+1000 where name =?",new Object[] { "nium" });
db.setTransactionSuccessful();
}catch (Exception e) {
Log.i("事务处理失败", e.toString());
} finally {
db.endTransaction();
db.close();
}
Room框架
Room:SQLite抽象层,访问数据库更加稳健,提升性能。
Database类:获取Dao类
Dao类:操作某个表(接口)
Entities类:代表某个表的结构(实体类)
Android Room 官方指南
使用 Room 将数据保存到本地数据库
Romm框架应用步骤:
- 定义第一个实体类:对应表结构。
- 定义第一个Dao接口:封装了对表的全部操作。
- 定义数据库类:可以获取Dao类的对象。
- 定义线程池类:防止阻塞主线程
- 定义其它的实体类和对应的Dao类
- 修改数据库类,使得数据库类可以获取其它Dao类
- 操作数据库:在线程中使用数据库类获取Dao对象,调用Dao对象的方法完成对数据库的增删改查等操作。
RecyclerView
recyclerview创建步骤:
- 创建展示一条数据的布局文件
- 创建ViewHolder类:把一条数据与布局文件中的展示组件对应起来
- 创建适配器类:包装数据集合并且为每个条目创建视图
- 创建ViewModel类:代表要展示的数据集(可以通过其属性或方法可以获取到需要展示的数据,比如从数据中获取)
- 在Activity的布局文件中加入RecyclerView组件
- 在Activity类中创建并显示RecyclerView
ViewHolder类也可以定义为适配器类的内部类;
LayoutManager类用于指定数据排列的方式,如:九宫格、瀑布流,自定义;
ItemDecoration类在每条数据的视图的周围或上面绘制一些装饰视图;
ItemAnimator类定义组件在修改、添加和删除时的动画效果;
RecyclerView本身不参与任何视图相关的问题,只负责回收和重用的工作。
RecyclerView使用详解 各种布局