11.从架构设计角度分析AAC源码-Room源码解析第0篇:开篇

前言

本系列将从无到有一步步解析Room源码。解析过程中,我们始终不要记住,Room其实是对Sqlite的增删改查。只不过加了自己的很多思想去润色。

正文

解析顺序,本系列将根据以下系列解说Room源码架构:

  1. 涉及最基础的Sqlite增删改查(Room使用到的增删改查)和对Sqlite的封装(Androidx的Sqlite架构)

  2. 当前demo为主线涉及到的Room源码主线部分解说;

  3. Room compiler代码生成部分源码解说,以及对Room注解根据源码写一个使用文档;

  • room-compiler中androidx.room.parser中的SQLite 文件是如何生成的简单理解一下
  1. Room从架构层面分析;

Sqlite增删改查

如果对SQLite的应用不了解,没办法对Room进行解析。

说明一下几个关于数据库类的关系

SQLitDatabase家族部分成员,相关类的说明如下(除了下面以外,没做解释的可以不用看,和Room没啥多大关系):

  1. SQLiteOpenHelper是一个帮助(Utility)类,用于方便开发者创建和管理数据库。

  2. SQLiteDatabase代表SQLite数据库,它内部封装了一个Native层的sqlite3实例。

  3. SQLiteStatement用于描述和SQL语句相关的信息。

  4. SQLiteProgram是基类,它提供了一些API用于参数绑定。

  5. SQLiteQuery主要用于query查询操作,而SQLiteStatement用于query之外的一些操作(根据SDK的说明,如果SQLiteStatement用于query查询,其返回的结果集只能是1行*1列)。

demo应用

当前数据库存在demo.db数据库文件中,一个用户表users:userid和username两个字段,userid表示主键。实现如下:

  1. 创建数据库文件,并获取SQLiteDatabase数据库对象:

     public class OpenHelper extends SQLiteOpenHelper{
     
     	final Context mContext;
     
     	public OpenHelper(Context context, String name,int version){
     		super(context,name,null,version);
     		mContext = context;
     	}
     
     	public SQLiteDatabase getSQLiteDatabase(boolean writele){
     		String name = getDatabaseName();
             if (name != null) {
                 //数据库文件如果不存在,那么新建
                 File databaseFile = mContext.getD
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值