推荐一个好用的数据库SDK—deepsql

作者: mymdeep | 来源:发表于2017-12-16 13:13 被阅读72次

好吧,说是推荐,其实这是我写的一个数据库组件,介绍给大家。这是第一版,希望大家在使用的同时能够给提出意见,或者提出需求。


解决痛点

这个数据库的组件解决的痛点主要有以下几类:

  • 建表的时候需要使用sql语句,如果表结构复杂,sql语句容易写错。deepsql可以通过三种方式更加简单的建表。直接传入model类,或者json或者map,与实际使用场景更加契合。
  • 插入数据的时候,可以使用model或json或map直接插入,不需要写sql语句
  • 更新删除都有封装,操作更加简单。

使用方式

只需要依赖

compile 'com.deep:deepsqllib:1.1'

即可。
下面介绍一下使用方式:

初始化

DeepSQL.getInstance().init(getApplication(),"demo.db",1);

第一个参数是Application
第二个参数为数据库名字
第三个参数为版本号。

建表

使用类建表

我们经常会将数据库内的数据转成一个modal类型,如果可以使用这个类来建表,岂不是很方便。
例如,我们有一个类:

public class Person implements Serializable{
    private String name;
    private int age;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}

那么根据这个类建表可以使用:

 DeepSQL.getInstance().create(Person.class);

其中表名会使用类名

map建表

也有时我们需要根据一个map建表:

HashMap<String,Object> map = new HashMap<String, Object>();
map.put("name","dog");
map.put("age",16);
DeepSQL.getInstance().create("animal",map);

其中第一个参数为表名

文件建表

如果以上方式都不需要,也可以使用asset中json建表的方式:
在assets文件夹中放一个json文件

{
  "name1":"String",
  "name2":"int",
  "name3":"boolean",
  "name4":"float",
  "name5":"double",
  "name6":"long"
}

然后调用:

  DeepSQL.getInstance().create(MainActivity.this, "names.json");

表的名为会以json的文件名命名

json建表

如果不习惯使用assets中的这种json建表方式,也可以直接使用json:

  DeepSQL.getInstance().create(MainActivity.this, json);

插入

json插入

  DeepSQL.getInstance().insert("person",jsonObject);
  • 第一个参数为表名
  • 第二个参数为插入的json

map 插入

 DeepSQL.getInstance().insert("animal",map);
  • 第一个参数为表名
  • 第二个参数为插入的map

实例化插入

 Person person  = new Person();
person.setName("john");
person.setAge(age);
DeepSQL.getInstance().insert(person);

数据库查询

查询所有

ArrayList<Object> list =  DeepSQL.getInstance().selectObjects(Person.class,"person");
  • 第一个参数为类
  • 第二个参数为表名

根据条件返回Json

 JSONArray array =  DeepSQL.getInstance().selectJsonArryBySQL("select * from person where id = 5");

根据条件返回Object

  ArrayList<Object> list =  DeepSQL.getInstance().selectObjectsBySQL(Person.class,"select * from person where id = 5");

更新

json更新

   DeepSQL.getInstance().update("person","id=?",new String[]{"5"},jsonObject);

object更新

    DeepSQL.getInstance().update("person","id=?",new String[]{"5"},person);

删除

 DeepSQL.getInstance().del("person","id=?",new String[]{"6"});

删除表

  DeepSQL.getInstance().dropTable("person");

直接执行sql语句

非查询

DeepSQL.getInstance().exec("sql");
  • 参数为SQL语句

查询

Cursor c =DeepSQL.getInstance().queryBySQL("sql");
  • 参数为SQL语句

数据库升级或降级处理

 DeepSQL.getInstance().sqlInterface = new SqlInterface() {
            @Override
            public void onUpgrade(SQLiteDatabase sqLiteDatabase, int oldVersion, int newVersion) {
                Logger.single(C.E,"onUpgrade myself");
            }

            @Override
            public void onDowngrade(SQLiteDatabase db, int oldVersion, int newVersion) {
                Logger.single(C.E,"onUpgrade myself");
            }
        };

请注意该方法需要在init之前调用。

特别说明

第一次写开源库,能力有限,欢迎大家多多提出意见。
也欢迎关注我的公众号,之后会推荐更多好用的组件库。


相关文章

  • deepsql数据库工具1.2更新

    如果还不了解deepsql的朋友,可以先看一下这篇文章推荐一个好用的数据库SDK—deepsql这篇文章发布以后,...

  • 推荐一个好用的数据库SDK—deepsql

    好吧,说是推荐,其实这是我写的一个数据库组件,介绍给大家。这是第一版,希望大家在使用的同时能够给提出意见,或者提出...

  • 友盟 “应用统计”

    推荐一款比较好用的 应用统计 SDK,最主要免费?????? 友盟。。。很久没有过了~~ 很久很久以前还在踏入“...

  • 好用的数据库推荐-miRNA数据库

    在解螺旋的公众号看到这个工具感觉很有用,觉得可以安利一波。最近接到曾老师的任务看非编码RNA调控相关的文献,写读书...

  • 数据挖掘神器——NHANES数据库

    01 引言 你还在为数据挖掘发愁吗?这里我们给大家推荐一个非常好用的数据库—NHANES。要做研究,就需要数据;N...

  • python开发微信公众号SDK选择

    推荐的sdk 1.wechat-sdk 文档地址: 2.wechat 文档地址: 3.wechatpy(推荐) 文...

  • 语音相关的资料

    在电脑上哪款文字转语音软件比较好用? SAPI SDK的介绍 vbs调用Microsoft Speech SDK语...

  • mysql数据库简介

    1. mysql数据库 mysql是最好用的数据库。说这句话不知道会不会被打。mysql数据库好用是因为其小巧,安...

  • ArcGIS 之 配置你的项目

    使用cocoapods安装sdk (推荐) pod'ArcGIS-Runtime-SDK-iOS' 手动安装(较为...

  • 个推SDK的集成

    关于个推 实时推送的一款SDK,比较好用,稳定 如何把个推SDK集成到你的APP里 当然看SDK还是王道 我写一下...

网友评论

    本文标题:推荐一个好用的数据库SDK—deepsql

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