美文网首页
Android 数据库操作技术(摘录)

Android 数据库操作技术(摘录)

作者: 沙子修仙人 | 来源:发表于2020-04-29 14:54 被阅读0次

一. Android数据库框架种类

除了Android源生的SQLite外,也有其他三方框架技术,如:GreenDao、Room、Realm、ORMLite、DBFlow、LitePal等。

二. 优缺点以及使用

1. SQLite

SQLite是一款轻量级的开源的嵌入式数据库,由D.Richard Hipp在2000年发布。SQLite使用方便,性能出众,广泛应用于消费电子、医疗、工业控制、军事等各种领域。

优点:

  1. 体积小:最低只需要几百K的内存就可以运行。
  2. 性能高:对数据库的访问性能很高,其运行速度比Mysql等开源数据库要快很多。
  3. 可移植性强:能支持各种32位和64位体系的硬件平台,也能在Windows、Linux、BSD、Mac OS、Solaries等软件平台中运行。
  4. SQL支持:SQLite支持ANSI SQL92中的大多数标准,提供了对子查询、视图、触发器等机制的支持。
  5. 接口:SQLite为C、Java、PHP、Python等多种语言提供了API接口,所有的应用程序都必须通过接口访问SQLite数据库。

使用步骤:

  1. 继承SQLiteOpenHelper抽象类
public class DatabaseHelper extends SQLiteOpenHelper{
}
  1. 实现具体的方法:构造方法、onCreate()、onUpgrade()
public class DatabaseHelper extends SQLiteOpenHelper{
    //带全部参数的构造函数,此构造函数必不可少
    public DatabaseHelper(Context context, String name, CursorFactory factory, int version) {
        super(context, name, factory, version);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        //创建数据库sql语句 并 执行
        String sql = "create table user(name varchar(20))";
        db.execSQL(sql);
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    }
}
  1. 获取SQLiteDatabase对象
    //依靠DatabaseHelper带全部参数的构造函数创建数据库
    DatabaseHelper dbHelper = new DatabaseHelper(MainActivity.this, "test_db",null,1);
    SQLiteDatabase db = dbHelper.getWritableDatabase();
  1. 使用SQLiteDatabase对象,对数据库进行增、删、改、查操作:insert()、delete()、update()、query()。

转自

2. GreenDao

greenDAO 是一个将对象映射到 SQLite 数据库中的轻量且快速的 ORM 解决方案。
其优点还包括以下几点:

  1. 存取速度快;
  2. 支持数据库加密;
  3. 轻量级;
  4. 激活实体;
  5. 支持缓存;
  6. 代码自动生成;
  7. greenDAO 支持 protocol buffer(protobuf) 协议数据的直接存储,如果你通过 protobuf 协议与服务器交互,将不需要任何的映射;
  8. 与 ORMLite 等使用注解方式的 ORM 框架不同,greenDAO 使用「Code generation」的方式,这也是其性能能大幅提升的原因。
    git 地址:https://github.com/greenrobot/greenDAO
    集成方法: compile ‘org.greenrobot:greendao:3.2.0’

加密注意事项:
需多添加一个依赖的 :compile 'net.zetetic:android-database-sqlcipher:3.5.7@aar'
网址:https://www.zetetic.net/sqlcipher/sqlcipher-for-android/
关于GreenDao3.2的升级处理一个不错的git地址:GreenDaoUpgradeHelper

具体用法:
可查看GreenDao的详解:
http://www.open-open.com/lib/view/open1438065400878.html

总结:效率很高,插入和更新的速度是sqlite的2倍,加载实体的速度是ormlite的4.5倍,目前git上一直在做更新维护,start数量为9000多。
转自

3. Room

Room在SQLite上提供了一个抽象层,以便在利用SQLite的全部功能的同时使流畅的数据库访问。

需要处理一些重要的结构化数据的App通常会从本地的持久数据中受益匪浅。最常见的就是使用本地缓存,这样的话下次如果设备无法联网用户也能浏览本地数据并进行更改。等下次联网后再和服务器进行同步。
Room有主要3个组件:

  • DataBase:包含数据库持有者,并作为与应用程序持久的关系数据的底层连接的主要访问点。
    用@database注释的类应该满足以下条件:
    1. 作为一个扩展空间数据库的抽象类。
    2. 在注释中包含与数据库相关联的实体列表。
    3. 包含一个有0参数的抽象方法,并返回带有@dao注释的类。
  • Entity:代表数据库中的表
  • Dao:包含了访问数据库的各种方法

这些组件,以及它们与应用程序的其余部分的关系如图


room_architecture.png

引入Room的依赖:

首先要添加Google Maven仓库,在project的在build.gradle添加

allprojects {
   repositories {
       jcenter()
       google()
   }
}

添加Room库的依赖,在module下的在build.gradle添加以下代码:

dependencies {
    def room_version = "1.1.1"

    implementation "android.arch.persistence.room:runtime:$room_version"
    annotationProcessor "android.arch.persistence.room:compiler:$room_version"

    // 可选 - Room的RxJava支持
    implementation "android.arch.persistence.room:rxjava2:$room_version"

    //可选 - Room的Guava支持,包含Optional and ListenableFuture
    implementation "android.arch.persistence.room:guava:$room_version"

    //测试帮助
    testImplementation "android.arch.persistence.room:testing:$room_version"
}

具体应用请此处

4. Realm

数据库Realm,是用来替代sqlite的一种解决方案,它有一套自己的数据库存储引擎,比sqlite更轻量级,拥有更快的速度,并且具有很多现代数据库的特性,比如支持JSON,流式api,数据变更通知,自动数据同步,简单身份验证,访问控制,事件处理,最重要的是跨平台,目前已有Java,Objective C,Swift,React-Native,Xamarin这五种实现。
优点:
1.易用:Ream 不是在SQLite基础上的ORM,它有自己的数据查询引擎。并且十分容易使用。
2.快速:由于它是完全重新开始开发的数据库实现,所以它比任何的ORM速度都快很多,甚至比SLite速度都要快。
3.跨平台:Realm 支持 iOS & OS X (Objective‑C & Swift) & Android。我们可以在这些平台上共享Realm数据库文件,并且上层逻辑可以不用任何改动的情况下实现移植。
4.高级:Ream支持加密,格式化查询,易于移植,支持JSON,流式api,数据变更通知等高级特性
5.可视化

git 地址:https://github.com/realm/realm-java
官网地址:https://realm.io/docs/java/latest/#getting-started

集成方法:官网中或相关博客中已做详细说明

学习使用:
【Android】Realm详解
Realm For Android详细教程
郭霖微信推荐

总结:目前git上一直在做更新维护,start数量也为7000多。数据库Realm,是用来替代sqlite的一种解决方案,它有一套自己的数据库存储引擎,比sqlite更轻量级,拥有更快的速度,并且具有很多现代数据库的特性,比如支持JSON,流式api,数据变更通知,自动数据同步,简单身份验证,访问控制,事件处理,最重要的是跨平台,目前已有Java,Objective C,Swift,React-Native,Xamarin这五种实现。和 SQLite 不同,它允许你在持久层直接和数据对象工作。在它之上是一个函数式风格的查询api,众多的努力让它比传统的SQLite 操作更快 。
转自

5. ORMLite

ORMlite是类似hibernate的对象映射框架,主要面向java语言,同时,是时下最流行的android面向数据库的的编程工具。
http://blog.csdn.net/sbvfhp/article/details/20460319
官方网站:http://ormlite.com/
优点:

  1. 轻量级;
  2. 使用简单,易上手;
  3. 封装完善;
  4. 文档全面。

缺点:

  1. 基于反射,效率较低;
  2. 缺少中文翻译文档
    jar包 地址:http://ormlite.com/releases/
    集成方法:把jar包复制到as的libs文件夹下,并且引用jar包即可

用法:

  1. 建立映射关系
    Ormlite与数据库的映射关系式通过注释来说明的。注释分为对于表的和对于单个列的:@DatabaseTable ,注释表的, @DatabaseField 注释单个列的。
  2. google原版封装了一个SqliteOpenHelper,供开发者调用,在OrmLite中,对原版的工具进行了加强,提供一个继承自SqliteOpenHelper的OrmLiteSqliteOpenHelper工具。

学习使用:
张鸿洋的博客
转自

6. DBFlow

Raizlabs公司开发的ORM(Object-relational mapping)库,DBFlow是一种使用注解(@~)来进行表单的定义等数据库处理,并将这些处理简化的安卓数据库框架。
其优点还包括以下几点:
1. 存取速度快;
2. 支持数据库加密;
3. 轻量级;
4. 激活实体;
5. 支持缓存;
6. 代码自动生成

git 地址:https://github.com/Raizlabs/DBFlow
集成方法: 参考git地址中的内容
学习使用:
DBFlow的初步使用
我所了解的Android数据库框架——DBFlow
转自

7. LitePal

LitePal是一款开源的Android数据库框架,采用对象关系映射(ORM)模式,将常用的数据库功能进行封装,可以不用写一行SQL语句就可以完成创建表、增删改查的操作。并且很轻量级,jar包不到100k,几乎零配置。
git 地址:https://github.com/LitePalFramework/LitePal
集成方法:compile ‘org.litepal.android:core:1.5.0’
学习使用:
郭霖的博客
总结:LitePal 框架是郭大神开源的数据库框架,他的博客也比较详细的介绍了其用法。还不错的框架。
转自

相关文章

网友评论

      本文标题:Android 数据库操作技术(摘录)

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