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. Python之可迭代对象、迭代器、生成器

    在使用Python的过程中,很容易混淆如下几个关联的概念: 1.容器(container) 2.可迭代对象(Iterable) 3.迭代器(Iterator) 4.生成器(generator) 5.生 ...

  2. JQUERY几个操作action,随意记录

    .click:鼠标单击 .mouseenter 鼠标滑动

  3. 是面向对象设计五个基本原则(SOLID)

    单一职责原则 - 搜狗百科 https://baike.sogou.com/v51360965.htm 单一职责原则并不是一个孤立的面向对象设计原则,它是面向对象设计五个基本原则(SOLID)之一.这 ...

  4. Object.defineProperties()

    w https://docs.microsoft.com/en-us/scripting/javascript/reference/object-defineproperty-function-jav ...

  5. 【原创】学习CGLIB动态代理中遇到的问题

    代码清单1 CGLIB动态代理 package wulj.proxy.cglibProxy; import java.lang.reflect.Method; import net.sf.cglib. ...

  6. Python3 不能直接导入reduce

    python 3.0以后, reduce已经不在built-in function里了, 要用它就得from functools import reduce. reduce的用法 reduce(fun ...

  7. Web Deploy 安装及问题解决

    注意: 站点名称:  服务器上IIS的站点名称.  . 我之前这里随便写一直不成功. 返回500..... 用户名, 密码:  这里最好用windows帐号. 问题比较少. 目标URL: 可不写. 可 ...

  8. windows安装mysql教程2017最新

    1.首先在mysql官网下载最新版mysql, 附上链接点击打开链接,根据你的系统型号选择对应的包下载,大约300多兆,版本号为5.7.19 下载完之后,解压缩,是一个标准的mysql文件 2.第二步 ...

  9. linux练习命令

    任务一:按要求完成以下操作1)显示日期格式2)在/tmp/下新建目录test ,并指定权限6643)显示环境变量path,但将/root加入到$PATH中4)用cat显示/etc/passwd,并打印 ...

  10. pyhton3 hashlib模块

    hashlib模块提供一下常量属性 hashlib.algorithms_guaranteed 获取保证在所有平台上此模块支持的哈希算法名称的集合 hashlib.algorithms_availab ...