jsonDB使用手册

简介:

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使用手册

时间: 2024-11-05 02:21:08

jsonDB使用手册的相关文章

angular参考手册拷贝

AngularJS 参考手册 AngularJS 指令 本教程用到的 AngularJS 指令 : 指令 描述 ng-app 定义应用程序的根元素. ng-bind 绑定 HTML 元素到应用程序数据 ng-bind-html 绑定 HTML 元素的 innerHTML 到应用程序数据,并移除 HTML 字符串中危险字符 ng-bind-template 规定要使用模板替换的文本内容 ng-blur 规定 blur 事件的行为 ng-change 规定在内容改变时要执行的表达式 ng-check

Exchange 2013迁移SOP手册

Exchange 2013迁移SOP手册 阶段1:环境部署 OUTLOOK升级方式 统计版本低于SP3的OUTLOOK客户端信息 记录计算机在域中所在OU信息 域中创建临时升级用OU,如MAILUPGRADE 采用如下命令移动计算机到MAILUPGRADE OU dsmove "CN=Aidong Qi,OU=Users,OU=TESTP,OU=Hitech,DC=hitechad,DC=com" -newparent OU=MAILUPGRADE,DC=hitechad,DC=com

oracle11g dataguard 完全手册

一.前言: 网络上关于dataguard的配置文章很多,但是很多打着oracle11g的文章实际都是只能在9 10 上运行,比如FAL_CLIENT在11g中已经废弃,但是现在网络上的文章都是没有标注这一点.而且对于具体含义语焉不详对于新手只能知其然而不知其所以然.这篇文章我就想让像我这样的人对于dataguard配置不仅仅知道怎么配置,还要知道为什么需要这样配置,这样的效果才是最好的. 这篇文章不仅仅是记录如何配置,还介绍了为什么是这样,以及注意要点,我希望这个文章可以作为进行dataguar

小书匠语法使用手册

小书匠语法使用手册 小书匠 语法 MARKDOWN 帮助 常用语法 标题 1这是 H1 一级标题 2------ 3这是 H2 二级标题 4====== 5# 这是 H1 一级标题 6## 这是 H2 二级标题 7### 这是 H3 三级标题 8#### 这是 H4 四级标题 9##### 这是 H5 五级标题 10###### 这是 H6 六级标题 11 快捷键: [ctrl + h] 列表 无序列表 1* 项目1 2 * 子项目1.1 3 * 子项目1.2 4 * 子项目1.2.1 5* 项

[笔记][Java7并发编程实战手册]3.2 资源的并发访问控制Semaphore信号量

[笔记][Java7并发编程实战手册]系列目录 简介 本文学习信号量Semaphore机制. Semaphore 本质是一个共享锁 内部维护一个可用的信号集,获取信号量之前需要先申请获取信号数量:用完之后,则需要释放信号量:如果不释放,那么其他等待线程则一直阻塞直到获取信号量或则被中断为止 本人的理解是:互斥锁是同一时间只能一个线程访问,而在这里,是同一时间允许获取到了信号量的线程并发访问,而没有获取到信号量的则必须等待信号量的释放: 将信号量初始化为 1,使得它在使用时最多只有一个可用的许可,

SVN Server环境安装配置手册

SVN Server环境安装配置手册_百度文库 http://wenku.baidu.com/link?url=923bv1olSkznh1gWd7Gqoxxwj18IHIlTXcEbNiPSLM5H32k93UtQ22rAVppNIlVv89ru4E1cPFe1yESSEkSsR4NfDMMRgpA2d3GI_KcV37m

《开源分享1》:前端开发必备《Html-CSS中文手册》

一直想做一些优秀的资源分享内容,今天尝试整理了一下,以后会每天抽点时间发一些自认为不错的资料出来.帮助大家提高学习效率. 今天分享的内容:前端开发:<Html-CSS中文手册>! 本手册针对的是已有一定网页设计制作经验的读者.其目的是提供完整清晰的样式表内容的快速索引及进阶帮助.所以对于网页制作和样式表的基础知识,仅简单介绍,恕不赘述. 手册提供了完整的 CSS2.0 的属性(Properties).规则(At-Rules).伪类(Pseudo-Classes).伪元素(Pseudo-Elem

LINUX基本命令行手册一

linux基本命令行手册一    1.1基本的网络命令        1>wget 从服务器上检索或下载文件,支持HTTP,HTTPS,FTP协议,服务器响应后,会将请求到的文件下载到当前用户所处的目录下        语法:wget [option]... [URL]...        option:            -t:尝试请求服务器的次数,若在指定的次数内,未响应,则断开链接            -o:将信息输出保存在记录文件中            -nc:支持断点下载,当下

linux 打造man中文帮助手册

步骤 下载开源的man-pages 中文手册包 配置解压手册包 安装 测试 参考资料 学IT的同学都知道, Linux是一个好东西, 但初学者往往会因为太多的命令觉得头疼, 更头疼的是所有的帮助文档都是英文. 其实Linux之所以强大, 就在于其强大的命令行, 如此繁杂的命令让一个六级以下英语水平的同学去看实在是一件很残忍的事, 甚至极大打消了很多同学学习Linux的热情. 这篇文章就为广大英语不好的Linux初学者们提供了一个简便的方法把man帮助信息变成中文. 步骤 下载开源的man-pag