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. exe4j中"this executable was created with an evaluation version of exe4j"

    在使用exe4j时,如果您的exe4j没有注册,在运行有exe4j转换的*.jar为*.exe的可执行文件是会提示:"this executable was created with an ...

  2. Python菜鸟之路:Django CSRF跨站请求伪造

    前言 CSRF,Cross-site request forgery跨站请求伪造,也被称为“One Click Attack”或者Session Riding,通常缩写为CSRF或者XSRF,是一种对 ...

  3. 我的Android进阶之旅------>Android知识图谱

    Android知识图谱,快来看看哪方面有漏洞? 该图转自:http://blog.csdn.net/xyz_lmn/article/details/41411355

  4. vue_router打包(webpack)

    把组件按组分块 有时候我们想把某个路由下的所有组件都打包在同个异步 chunk 中.只需要 给 chunk 命名,提供 require.ensure第三个参数作为 chunk 的名称: require ...

  5. 判断点是否在区域的python实现(射线法)

    #!/usr/bin/env python # -*- coding: utf-8 -*- # @Date : 2018-10-07 15:49:37 # @Author : Sheldon (thi ...

  6. 剑指offer 面试37题

    面试37题: 题:序列化二叉树 题目:请实现两个函数,分别用来序列化和反序列化二叉树 解题思路:首先来看二叉树的序列化,二叉树的序列化就是采用前序遍历二叉树输出节点,再碰到左子节点或者右子节点为Non ...

  7. 《UNI|X环境高级编程》 源代码配置

    代码下载地址:http://www.apuebook.com/ 下的第二版,里面有个readme文件: root@iZ23onhpqvwZ:~/ms/linux/apue/apue.2e# cat R ...

  8. MapX小试

    需MapX 控件 string layerName = "12Q3_new"; string tabFile = string.Format(@"E:\map\地图\现在 ...

  9. Nginx反向代理+负载均衡简单实现

    一.基础环境: 负   载  机:A机器: 192.168.71.223后端机器1:B机器:192.168.71.224后端机器2:C机器:192.168.71.226 需求: 1)访问A机器的808 ...

  10. UI控件之UITableView的基本属性

    UITableView:特殊的滚动视图,横向固定,可以在纵向上滚动,自动计算contentSize 创建tableView,初始化时指定样式,默认是plain UITableView *_tableV ...