Android数据库存储

前言:

今天无聊就试试水,写写博客,在之前andorid使用数据储存好像大概有5种方式,其中轻量级的是sqlite数据库,但是sqlite使用起来好像有麻烦,首先要判断…之后创建数据库…创建表…之后就插入数据 那代码都是一块块的,使用起来好麻烦,所有就对数据库操作进行少少优化

代码介绍

github:https://github.com/Ruanjiahui/KotlinDatabase

android studio : compile ‘ruan.database.com:mydatabase:1.1’

优点:

  • 调用方便
  • 减少用户逻辑处理
  • 代码量少

框架设计:


原生使用数据库需要以下步骤
比如:

  • 创建SQLiteOpenHelper 之后在类创建数据库,创建表等等,这样子的灵活性比较麻烦
  • 创建SQLiteDatabase 之后操作数据库
  • ContentValues是唯一插入数据库的数据类型 如果你使用对象就必须将Object转成ContentValues
  • 数据库的数据提取返回cursor,之后手动的将cursor将数据取出来把数据封装成Object之后再使用
    .
    .
    .
    所有原生使用本地数据库是非常麻烦的事情,所以使用sqlite的时候是非常吃力的

所以才有现在这个框架的出现
SQLiteOpenHelper 和SQLiteDatabase
不需要开发者去创建和操作,之后插入数据库的时候不在是ContentValues这个数据类型了,可以直接将Object将数据插入数据库,不需要开发者手动将数据进行类型转换,其实底层实现的方式还是Object将转成ContentValues但是不需要开发者去手动转换而以,实现的方式就是好好利用java的原生反射机制,将Object里面的数据进行自动转换成ContentValues,这个样子不但可以节约开发时间,可以变得更自动化。
从数据库里面获取数据也是不需要手动转,直接将cursor数据自动封装成Object,原理其实也是利用java强大的反射机制,完成这个操作。开发者就可以直接一句命令代码就可以实现从数据库里面增删查改
这个框架也还是实现就是自动判断创建数据库和数据表的操作,首先每次启动app的时候都要检查数据库的检查是否存在,自动判断,如果没有该表则自动创建表,这个逻辑方式就不需要开发者去通过代码实现,让这个框架帮你实现

说了这么多应该就可以上代码解释了╮(╯▽╰)╭


java


public class Test implements DatabaseCallback{ public Test(Context context){
CheckDatabase.Companion.CheckData(context , "数据库名称" , "数据库表" , this);
} @NotNull
@Override
public Object CreateTable(@NotNull String database, @NotNull String table, boolean state) {
//通过state判断这个表是不是存在 true存在false不存在
if (state)
return null;
else{
//这个是创建表的时候 传入表的结构
Establish establish = new Establish();
establish.put("id" , "int");
establish.put("name" , "varchar(50)");
return establish;
}
}
}

上面的代码片段是自动检测数据库和数据库表是否存在,之后通过表的结构自动创建表不用手动的判断表
这个框架是用Kotlin写的,因为google官方将Kotlin列入android官方语言,所以提前运用一下O(∩_∩)O哈哈~下面的代码使用Kotlin语言实现功能和上面的一样

Kotlin

class Test (var context: Context) : DatabaseCallback{

    override fun CreateTable(database: String, table: String, state: Boolean): Any {
if (state)
return null!!
else{
val establish : Establish = Establish()
establish.put("id" , "int")
establish.put("name" , "varchar(50)")
return establish
}
} init {
CheckDatabase.CheckData(context , "数据库名称" , "数据库表" , this)
} }

创建完数据库的表,这个时候剩下的就是数据库的增删查改

Java

new BaseUser(context).INSERT("数据库名称" , "数据库表" , object)
new BaseUser(context).DELETE("数据库名称" , "数据库表")
new BaseUser(context).QUERY("数据库名称" , "数据库表" , class)
new BaseUser(context).UPDATE("数据库名称" , "数据库表" , object)

上面4句话就是数据库的增删查改就这么简单不需要其他的操作

CheckData

Kotlin

BaseUser(context).INSERT("数据库名称" , "数据库表" , object)
BaseUser(context).DELETE("数据库名称" , "数据库表")
BaseUser(context).QUERY("数据库名称" , "数据库表" , class)
BaseUser(context).UPDATE("数据库名称" , "数据库表" , object)

这个是我个人封装的一个数据库的小框架里面

CheckDatabase这个类是实现检测数据库和表是否存在的类
BaseUser是数据库操作的类

总结

本文主要介绍这个框架的使用,实现增删查改和数据库的一些操作,以便开发更好使用操作数据库

Android sqlite 使用框架的更多相关文章

  1. Android SQLite ORM框架greenDAO在Android Studio中的配置与使用

    博客: 安卓之家 微博: 追风917 CSDN: 蒋朋的家 简书: 追风917 博客园: 追风917 # 说明 greenDAO是安卓中处理SQLite数据库的一个开源的库,详情见其官网:我是官网 详 ...

  2. [Android]Android端ORM框架——RapidORM(v2.1)

    以下内容为原创,欢迎转载,转载请注明 来自天天博客:http://www.cnblogs.com/tiantianbyconan/p/6020412.html [Android]Android端ORM ...

  3. 15 个 Android 通用流行框架大全(转)

    1. 缓存 DiskLruCache    Java实现基于LRU的磁盘缓存 2.图片加载 Android Universal Image Loader 一个强大的加载,缓存,展示图片的库 Picas ...

  4. Android 通用流行框架

    原文出处: http://android.jobbole.com/83028/ 1. 缓存 名称 描述 DiskLruCache Java实现基于LRU的磁盘缓存 2.图片加载 名称 描述 Andro ...

  5. 经受时间沉淀的15 个 Android 通用流行框架大全

    1. 缓存 名称描述 DiskLruCache: Java实现基于LRU的磁盘缓存 2.图片加载 名称描述 Android    Universal Image Loader 一个强大的加载,缓存,展 ...

  6. Android通用流行框架大全

    1. 缓存 名称 描述 DiskLruCache Java实现基于LRU的磁盘缓存 2.图片加载 名称 描述 Android Universal Image Loader 一个强大的加载,缓存,展示图 ...

  7. 60.Android通用流行框架大全

    转载:https://segmentfault.com/a/1190000005073746 Android通用流行框架大全 1. 缓存 名称 描述 DiskLruCache Java实现基于LRU的 ...

  8. 15 个 Android 通用流行框架大全

      1. 缓存 名称 描述 DiskLruCache Java实现基于LRU的磁盘缓存 2.图片加载 名称 描述 Android Universal Image Loader 一个强大的加载,缓存,展 ...

  9. Android 通用流行框架大全

    1. 缓存 DiskLruCache    Java实现基于LRU的磁盘缓存 2.图片加载 Android Universal Image Loader 一个强大的加载,缓存,展示图片的库 Picas ...

随机推荐

  1. grafana-----Time Range Controls

    Grafana提供了许多方法来管理时间的可视化数据的范围,在Dashboard-level和Panel-level都有. 在右上角,您有主仪表板时间选择器(它位于“Zoom out”和“Refresh ...

  2. mysql-font的理解

    mysql-front是为mysql制作的一种图形化界面工具,可以管理和操作数据库,比如建表,修改数据,拖拽方式的数据库和表格,可编辑/可增加/删除的域,可编辑/可插入/删除的记录,可显示的成员,可执 ...

  3. Oracle中的in参数的个数限制

    遇到了这个问题 “oracle中in参数个数限制”,这里记录下, in后括号中的参数个数有限制,Oracle 9i 中个数不能超过256,Oracle 10g个数不能超过1000. 当in的个数大于1 ...

  4. Win7环境下Apache+mod_wsgi本地部署Django

    django基础已经掌握的同学可以尝试将项目发布已寻找些许成就感,以鼓励自己接下来进行django的进阶学习 以前你总是使用python manage.py runserver进行服务启动,但是却不知 ...

  5. 让linux进程后台运行、会话断开不退出

    方法一:nohup ping www.ibm.com & 可改变进程的父进程号方法二:setsid ping www.ibm.com 可改变进程的父进程号方法三:(ping www.ibm.c ...

  6. 前端基础 & 初识CSS

    CSS介绍 CSS(Cascading Style Sheet,层叠样式表)定义如何显示HTML元素.l 当浏览器读到一个样式表,它就会按照这个样式表来对文档进行格式化(渲染). CSS语法 每个CS ...

  7. InnoDB 与 MyISAM 区别

      1.myisam可以对索引进行压缩,innodb不压缩 2.索引都用b-tree, innodb使用 b+tree,NDB Cluster使用 T-Tree. 3.myisam 表级锁, inno ...

  8. java基础:父类与子类之间变量和方法的调用

    1)父类构造函数 java中当调用某个类的构造方法的时候,系统总会调用父类的非静态初始化块进行初始化,这个调用是隐式的,而且父类的静态初始化代码 块总是会被执行,接着调用父类的一个或者多个构造器执行初 ...

  9. jquery on 确认删除

    $(document).on('click', '.delbtn', function() {         if (confirm("确定要删除吗?")) {          ...

  10. Ubuntu 下 java 版本的切换

    切换的方法很简单,使用下面的两个命令即可: update-alternatives --config java update-alternatives --config javac eg: root@ ...