美文网首页daoAndroid知识
GreenDao3.2使用本地(Assets)数据库

GreenDao3.2使用本地(Assets)数据库

作者: woitaylor | 来源:发表于2017-03-31 09:11 被阅读818次

    GreenDao3.2简介

    Android开发中我们或多或少都会接触到数据库。Android中提供了一个占用内存极小的关系型数据库-SQLite。虽然Android系统中提供了许多操作SQLite的API,但是我们还是需要手动去编写SQL语句,这经常会出现一些莫名其妙的问题。所以便出现了许多ORM(对象关系映射)框架。其中比较著名的有GreenDao等。

    1.性能最大化,可能是Android平台上最快的ORM框架

    2.易于使用的API

    3.最小的内存开销

    4.依赖体积小

    5.支持数据库加密

    6.强大的社区支持

    GreenDao3.2使用本地数据库

    GreenDao基本使用简单,但是不注意的话也是很难发现问题。下面直接进入主题:

    数据库的表格式如下:

    数据库在项目里面的位置:

    拷贝数据库代码

    我们确定了需要拷贝的路径databasepath并创建了异步任务mCopyDataBaseTask;

    接下来我们定义了两个方法getDatabaseFilepath、getDatabaseFile,前者是获取了将要拷贝的目录,后者是获取了数据库文件的路径。

    经过一系列的判断语句我们最终执行mCopyDataBaseTask.execute(sfile);

    没错,我们开始了异步任务,传入了数据库文件的路径。

    我们来到AsyncTask,在doInBackground方法中我们通过getAssets方法来获取AssetManger的引用(基础薄弱的这里有必要解释一下:assets文件夹里面的文件都是保持原始的文件格式,需要用AssetManager以字节流的形式读取文件。来自Resources和Assets 中的文件只可以读取而不能进行写的操作。)通过open方法我们得到字节流并写入到指定的目录文件中完成拷贝。

    至此AsyncTask任务执行完成。

    GreenDao的Bean类

    值得注意的细节在Bean类Entity注解:

    1.nameInDb:在数据库中使用的别名,默认使用的是实体的类名,需要根据我们将要查询的表面赋值。

    接下来我们创建了数据库实体类TvTable,@Property:设置一个非默认关系映射所对应的列名,默认是使用字段名,例如:@Property(nameInDb = "name")。

    重要的地方我们再说一次:

    1.字段BRAND_CN,@Property(nameInDb = "BRAND_CN")这里一定要指定为“BRAND_CN”列名不然greenDao自动生成的列名为BRAND__CN注意会多了一个下划线,这个很重要。自动生成规则为首字母大写驼峰使用下划线代替,如nameEn--->Name_En;下面的MODEL不需要是因为自动生成的还是这个名字。很重要。

    2.字段ID,注意这里一定要有 @Property(nameInDb = "ID")这个属性,数据类型为Long或者long,很重要。

    最后我们创建了queryInfraredDB查询方法,通过queryRawCreate方法接受sqlRaw-sql语句,获得Query。

    遍历Query从而获取数据库每个字段值。

    相关文章

      网友评论

        本文标题:GreenDao3.2使用本地(Assets)数据库

        本文链接:https://www.haomeiwen.com/subject/omlmottx.html