已在github上建立项目:https://github.com/ThinkerCodeChina/jsonDB

博客:http://blog.csdn.net/thinkercode/

简单介绍:

         jsonDB是js的一个类库,是基于json数据格式构建的数据模型实现对json数据增删改查。jsonDB的构建源自于HTML5本地存储的一个应用需求,能够通过sql对json数据进行增删改查。同一时候该类库提供强大的where检索条件,数据排序。limit查询条件限制等数据库基本功能。

通过jsonDB能够轻松维护一个库/表或多个库/表。而无需额外实现json的数据的维护等。在该类库完好以后为简化sql操作,基于jsonDB核心模块扩展了连贯操作模型,简化对jsonDB的操作以及sql语句出错的概率。

 

一、jsonDB核心模块功能

1.        jsonDB([[data],dbName])

概述:

         创建jsonDB数据库模型实例

參数:

         data (可选)

                   json库/表数据

         dbName(可选)

                   数据库/表名称。默觉得json_db

返回值:jsonDB

 

2.        init([alias])

概述:

         初始化jsonDB数据库模型,能够通过alias对jsonDB()方法设置一个别名。便于数据操作。

參数:

         alias(可选)

                   通过alias对jsonDB()方法设置一个别名

返回值:jsonDB

 

3.        query(sql)

概述:

         运行一个sql语句,该方法支持select、delete、update操作,当中select支持选择指定字段、from、where、order by、limit字句,delete支持from、where、limit字句,update支持from、set、where、limit字句,该方法实现了数据库主要的sql语句操作。query()方法并不支持insert语句,由于採用json数据格式的原因,顾採用insert方法单独实现一个高效可行的insert操作方法。

參数:

         sql(必选)

                   要运行的sql语句,必须是select、delete、update中的一种。

返回值:

         select语句返回查询结果,delete和update语句会返回运行影响操作的条数

 

4.        insert(data[,dbName])

概述:

         向数据表末端插入一条数据或者向数据库中插入一个数据表

參数:

         data (必选)

                   要插入的数据

         dbName(可选)

                   数据库或数据表的名称,默觉得json_db

返回值:jsonDB

        

5.        findAll([dbName])

概述:

         高速获取指定数据库/表中的全部数据,主要用来对数据处理完毕后,须要保存数据时使用,比如删除指定数据后调用该方法获取全部删除后的数据并存储在本地存储中,当然不同的应用可能实现不同的功能。

參数:

         dbName(可选)

                   数据库或数据表名称。

默觉得json_db

返回值:指定数据库或数据表的数据

一、jsonDB基础应用演示样例

//创建一张user数据表,并定义一个DB的jsonDB别名
var data = [{username:'张三',sex:'男',birthday:{year:2000,month:6,day:18}},{username:'李红',sex:'女',birthday:{year:1986,month:9,day:22}}];
//下面方法能够通过两种方式获取别名。一个是通过init方法获取(推荐)。一个是获取jsonDB()方法的返回值
//以后演示样例中都将使用init()方法创建的别名操作数据
var jDB = jsonDB(data,'user').init('DB'); //插入一条新的数据
data = {username:'李想',sex:'男',birthday:{year:1990,month:2,day:15}};
DB.insert(data,'user'); //查询姓名为李红的性别,where条件必须加()否者会出现错误
var result =DB.query('select sex from user where (username="李红")');
//结果:[{"sex":"女"}] //查询2000年之前出生的且按出生年先后排序
var result =DB.query('select * from user where (birthday.year<2000) order by birthday.year asc');
//结果:[{"username":"李红","sex":"女","birthday":{"year":1986,"month":9,"day":22}},{"username":"李想","sex":"男","birthday":{"year":1990,"month":2,"day":15}}]
//查询年龄最小的两个人
var result =DB.query('select * from user order by birthday.year desc limit 2');
//查询结果:[{"username":"张三","sex":"男","birthday":{"year":2000,"month":6,"day":18}},{"username":"李想","sex":"男","birthday":{"year":1990,"month":2,"day":15}}] //改动李红的出生日期
var result =DB.query('update user set birthday.year=1991 where (username="李红") limit 1');
//影响条数为一条。能够通过DB.findAll('user')获取全部数据查看是否被改动成功 //删除姓名为李想的数据
var result =DB.query('delete from user where (username="李想") limit 1');
//影响条数为一条。能够通过DB.findAll('user')获取全部数据查看是否被删除成功 //数据库中全部数据
//[{"username":"张三","sex":"男","birthday":{"year":2000,"month":6,"day":18}},{"username":"李红","sex":"女","birthday":{"year":1991,"month":9,"day":22}}]

三、jsonDB扩展

简单介绍:

         基于jsonDB核心模块为简化sql语句编写、数据操作等方面考虑而编写的数据库连贯操作模型,在扩展模型上实现jsonDB更为强大的操作方式和功能。

 

1.        table(table)

概述:

         定义之后jsonDB查询默认表名称

參数:

         table (必选)

         定义之后jsonDB要操作的默认表名称,不影响sql语句的默认表名称,仅仅会影响之后全部连贯操作。

返回值:jsonDB

 

2.        field(fileds)

概述:

         定义查询返回的字段

參数:

         fields(必选)

         能够接受数组或以,号隔开的字符串

返回值:jsonDB

3.        where(where)

概述:

         定义查询条件,支持全部if能够接受的条件,双等号能够写成单等号,比sql语句更加简洁的是不用在where条件两端写一对括号。

參数:

         where(必选)

         查询条件

返回值:jsonDB

 

4.        order(order)

概述:

         定义排序方式,眼下仅仅支持单字段排序

參数:

         order(必选)

         定义排序方式

返回值:jsonDB

 

5.        limit(limit)

概述:

         限制查询条数或范围

參数:

         limit(必选)

         限制查询条数或范围,单独一个数字限制查询条数。以逗号切割两个数字代表查询范围。

返回值:jsonDB

 

6.        add(data)

概述:

         能够结合table()方法向指定数据表中插入数据,假设之前没有设定table()方法将默认插入到json_db数据表中。

參数:

         data(必选)

         要插入到数据表或数据库中的数据。

返回值:jsonDB

 

7.        select()

概述:

         能够配合定义的field()、table()、where()、order()、limit()方法现实复杂查询

參数:无

返回值:result

 

8.        update(data)

概述:

         能够配合table()、where()、limit()方法对指定数据进行改动

參数:

         data(必选)

          update语句的set字句字符串

返回值:

         操作影响条数

 

9.        delete()

概述:

         能够配合table()、where、limit()方法对指定数据进行删除操作

參数:无

返回值:

         操作影响的条数。

 

10.    drop()

概述:

         删除指定数据库或表

參数:无

返回值:jsonDB

四、jsonDB的高级应用

//向数据表插入一条数据
DB.table('user').add({username:'王帅',sex:'男',birthday:{year:1995,month:10,day:23}}); //查询全部人出生日期。并按出生年排序。由于之前使用table('user')定义为user表。所以能够省略,table方法定义是一直有效的,除非是又一次设定了
var result = DB.field('username,birthday').order('birthday.year').select();
//查询结果 [{"username":"李红","birthday":{"year":1991,"month":9,"day":22}},{"username":"王帅","birthday":{"year":1995,"month":10,"day":23}},{"username":"张三","birthday":{"year":2000,"month":6,"day":18}}] //先插入一些数据,方便后面的检索操作
DB.table('user').add({username:'李亨',sex:'男',birthday:{year:2008,month:8,day:8}})
.add({username:'张琦',sex:'男',birthday:{year:1990,month:10,day:23}})
.add({username:'李媛芳',sex:'女',birthday:{year:1985,month:2,day:28}})
.add({username:'李果果',sex:'女',birthday:{year:2002,month:3,day:15}})
.add({username:'张源',sex:'男',birthday:{year:2005,month:12,day:5}})
.add({username:'王丽娜',sex:'女',birthday:{year:1992,month:5,day:12}}); //高级查询之模糊搜索
//查询全部李姓成员(正则查找法)
var result = DB.field(["username"]).where('username.match(/^李/)').select();
//查询结果[{"username":"李红"},{"username":"李亨"},{"username":"李媛芳"},{"username":"李果果"}] //查询全部李姓成员(字符串搜索法)
var result = DB.field(["username"]).where('username.indexOf("李")=0').select();
//查询结果[{"username":"李红"},{"username":"李亨"},{"username":"李媛芳"},{"username":"李果果"}] //查询全部在1990年到1995年出生的人
var result = DB.field(["username","birthday"]).where('birthday.year>=1990 and birthday.year<=1995').order('birthday.year').select();
//查询结果:[{"username":"张琦","birthday":{"year":1990,"month":10,"day":23}},{"username":"李红","birthday":{"year":1991,"month":9,"day":22}},{"username":"王丽娜","birthday":{"year":1992,"month":5,"day":12}},{"username":"王帅","birthday":{"year":1995,"month":10,"day":23}}]

源代码及演示样例下载:jsonDB.rar



jsonDB使用手冊的更多相关文章

  1. 包管理器Bower使用手冊之中的一个

    包管理器Bower使用手冊之中的一个 作者:chszs,转载需注明.博客主页:http://blog.csdn.net/chszs 一.Bower介绍 Bower是一个适合Web应用的包管理器,它擅长 ...

  2. Apache Shiro 使用手冊 链接文件夹整理

    1.Apache Shiro 使用手冊(一)Shiro架构介绍 2.Apache Shiro 使用手冊(二)Shiro 认证 3.Apache Shiro 使用手冊(三)Shiro 授权 4.Apac ...

  3. Apache Mina开发手冊之四

    Apache Mina开发手冊之四 作者:chszs,转载需注明. 博客主页:http://blog.csdn.net/chszs 一.Mina开发的主要步骤 1.创建一个实现了IoService接口 ...

  4. 平实给力的写作指导入门手冊——leo鉴书57

    写作是个体力活儿,须要不断的练习和砥砺.既然是体力劳动,那必定有套路,前人总结.后人学习并加以积累沉积,日久则形成不同的风格和流派有点儿像.相同,写作也有自己的套路和学习路径.初涉写作有必备之书吗?当 ...

  5. HapiJS开发手冊

    HapiJS开发手冊 作者:chszs.转载需注明.博客主页:http://blog.csdn.net/chszs 一.HapiJS介绍 HapiJS是一个开源的.基于Node.js的应用框架,它适用 ...

  6. ANTLR4权威參考手冊(一)

    写在前面的话: 此文档是对伟大的Terence Parr的著作<the definitive antlr4 reference>的翻译本.致敬!欢迎转载,请注明原地址,请尊重劳动成果.翻译 ...

  7. Node.js v0.10.31API手冊-控制台

    Node.js v0.10.31API手冊-文件夹 控制台 Object 用于向 stdout 和 stderr 打印字符.类似于大部分 Web 浏览器提供的 console 对象函数,在这里则是输出 ...

  8. Node.js v0.10.31API手冊-事件

    Node.js v0.10.31API手冊-文件夹 Events(事件) Node里面的很多对象都会分发事件:一个net.Server对象会在每次有新连接时分发一个事件, 一个fs.readStrea ...

  9. Hadoop 2.6.0分布式部署參考手冊

    Hadoop 2.6.0分布式部署參考手冊 关于本參考手冊的word文档.能够到例如以下地址下载:http://download.csdn.net/detail/u012875880/8291493 ...

随机推荐

  1. 3.7 C++派生类构造函数调用规则

    参考:http://www.weixueyuan.net/view/6364.html 总结: 派生类构造函数可以自动调用基类的默认构造函数而无需显式调用. 生类构造函数可以自动调用基类的默认构造函数 ...

  2. 2.16 C++类与new和delete操作符

    参考: http://www.weixueyuan.net/view/6347.html 总结: 当我们需要为类对象动态分配存储空间时,我们应该使用C++语言提供的new与new[]操作符,而不要使用 ...

  3. Linux文件管理常用命令用法总结

    1.touch change file timestamps. 命令用于修改文件或者目录的时间属性,包括存取时间和更改时间.若文件不存在,系统会建立一个新的文件.stat,ls -l 可以显示档案的时 ...

  4. linux 常用重启

    sudo reboot 为最常用重启 Linux centos关机与重启命令详解与实战 Linux centos重启命令: 1.reboot 普通重启 2.shutdown -r now 立刻重启(r ...

  5. ESP8266上报数据到中国移动物联网平台HTTP

    #include <HttpPacket.h> #include <ArduinoJson.h> #include <ESP8266WiFi.h> HttpPack ...

  6. Nginx 自动补全url地址补全最后的斜线

    参考地址: http://blog.csdn.net/dong123dddd/article/details/51660368 location /riskcontrol { root /data; ...

  7. laravel 部署 前后端分离

    1. iis服务器配置(web.config): <configuration> <system.webServer> <rewrite> <rules> ...

  8. 读懂TCP状态转移

    读懂TCP状态转移过程,对理解网络编程颇有帮助,本文将对TCP状态转移过程进行介绍,但各状态(总共11个)含义不在本文介绍的范围,请参考文末的书目列表. TCP状态转换图(state transiti ...

  9. Linux服务器新建用户和组,并分配sudo权限 (Ubuntu系统)

    新拿到一台服务器后我们一般都是要新建用户组,用户,并为其分配权限. ==================================================== 赋予用户组sudo权限: ...

  10. Java中的方法重载

    一.什么是方法重载? 方法重载就是两个或多个方法的方法名相同,但是方法的形参类型,数量,顺序不同. 上面提到的三点也就是一个方法的特征标,只要有一点不相同,则该方法就不相同,就可以实现重载. 在这里的 ...