Android sqlite 使用框架
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 使用框架的更多相关文章
- Android SQLite ORM框架greenDAO在Android Studio中的配置与使用
博客: 安卓之家 微博: 追风917 CSDN: 蒋朋的家 简书: 追风917 博客园: 追风917 # 说明 greenDAO是安卓中处理SQLite数据库的一个开源的库,详情见其官网:我是官网 详 ...
- [Android]Android端ORM框架——RapidORM(v2.1)
以下内容为原创,欢迎转载,转载请注明 来自天天博客:http://www.cnblogs.com/tiantianbyconan/p/6020412.html [Android]Android端ORM ...
- 15 个 Android 通用流行框架大全(转)
1. 缓存 DiskLruCache Java实现基于LRU的磁盘缓存 2.图片加载 Android Universal Image Loader 一个强大的加载,缓存,展示图片的库 Picas ...
- Android 通用流行框架
原文出处: http://android.jobbole.com/83028/ 1. 缓存 名称 描述 DiskLruCache Java实现基于LRU的磁盘缓存 2.图片加载 名称 描述 Andro ...
- 经受时间沉淀的15 个 Android 通用流行框架大全
1. 缓存 名称描述 DiskLruCache: Java实现基于LRU的磁盘缓存 2.图片加载 名称描述 Android Universal Image Loader 一个强大的加载,缓存,展 ...
- Android通用流行框架大全
1. 缓存 名称 描述 DiskLruCache Java实现基于LRU的磁盘缓存 2.图片加载 名称 描述 Android Universal Image Loader 一个强大的加载,缓存,展示图 ...
- 60.Android通用流行框架大全
转载:https://segmentfault.com/a/1190000005073746 Android通用流行框架大全 1. 缓存 名称 描述 DiskLruCache Java实现基于LRU的 ...
- 15 个 Android 通用流行框架大全
1. 缓存 名称 描述 DiskLruCache Java实现基于LRU的磁盘缓存 2.图片加载 名称 描述 Android Universal Image Loader 一个强大的加载,缓存,展 ...
- Android 通用流行框架大全
1. 缓存 DiskLruCache Java实现基于LRU的磁盘缓存 2.图片加载 Android Universal Image Loader 一个强大的加载,缓存,展示图片的库 Picas ...
随机推荐
- exe4j中"this executable was created with an evaluation version of exe4j"
在使用exe4j时,如果您的exe4j没有注册,在运行有exe4j转换的*.jar为*.exe的可执行文件是会提示:"this executable was created with an ...
- Python菜鸟之路:Django CSRF跨站请求伪造
前言 CSRF,Cross-site request forgery跨站请求伪造,也被称为“One Click Attack”或者Session Riding,通常缩写为CSRF或者XSRF,是一种对 ...
- 我的Android进阶之旅------>Android知识图谱
Android知识图谱,快来看看哪方面有漏洞? 该图转自:http://blog.csdn.net/xyz_lmn/article/details/41411355
- vue_router打包(webpack)
把组件按组分块 有时候我们想把某个路由下的所有组件都打包在同个异步 chunk 中.只需要 给 chunk 命名,提供 require.ensure第三个参数作为 chunk 的名称: require ...
- 判断点是否在区域的python实现(射线法)
#!/usr/bin/env python # -*- coding: utf-8 -*- # @Date : 2018-10-07 15:49:37 # @Author : Sheldon (thi ...
- 剑指offer 面试37题
面试37题: 题:序列化二叉树 题目:请实现两个函数,分别用来序列化和反序列化二叉树 解题思路:首先来看二叉树的序列化,二叉树的序列化就是采用前序遍历二叉树输出节点,再碰到左子节点或者右子节点为Non ...
- 《UNI|X环境高级编程》 源代码配置
代码下载地址:http://www.apuebook.com/ 下的第二版,里面有个readme文件: root@iZ23onhpqvwZ:~/ms/linux/apue/apue.2e# cat R ...
- MapX小试
需MapX 控件 string layerName = "12Q3_new"; string tabFile = string.Format(@"E:\map\地图\现在 ...
- Nginx反向代理+负载均衡简单实现
一.基础环境: 负 载 机:A机器: 192.168.71.223后端机器1:B机器:192.168.71.224后端机器2:C机器:192.168.71.226 需求: 1)访问A机器的808 ...
- UI控件之UITableView的基本属性
UITableView:特殊的滚动视图,横向固定,可以在纵向上滚动,自动计算contentSize 创建tableView,初始化时指定样式,默认是plain UITableView *_tableV ...