已在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



转载于:https://www.cnblogs.com/xfgnongmin/p/10743844.html

jsonDB使用手冊相关推荐

  1. Loopback測试软件AX1用户手冊 V3.1

    点击:AX1 软件下载 1. 什么是AX1 AX1程序是基于windows的PC程序,用来评估 iinChip™的性能,也即是wiznet的硬件TCP/IP芯片. AX1通过网络与iinChip™评估 ...

  2. 批次程序安裝手冊寫法

    系統同步資料處理程式安裝手冊實例 Document No. 0.0.0.1 Creation Date 2012/02/25 Document Version 0.0.0.1 Revision Dat ...

  3. php手冊,php手冊之變量范圍

    手冊目錄: 語言參考---變量---變量范圍 參考詳情: https://secure.php.net/manual/zh/language.variables.scope.php 評論部分: 1. ...

  4. Powerdesigner使用手冊

    Powerdesigner使用手冊 显示界定线 更改当前的DBMS 显示或者隐藏Palette 快捷键 显示界定线 工具栏Tools-Display Preferences 选项show page d ...

  5. NS2 教學手冊 ( NS2 Learning Guide)

    转载自:NS2 教学手册(柯志亨网站资源) NS2 教學手冊 ( NS2 Learning Guide) [快速連結區] My works  中文影音教學區  Q&A for my works ...

  6. 柯志亨老师-- NS2 教學手冊

    感谢柯志亨老师! NS2教學手冊( NS2 Learning Guide) [快速連結區] My works中文影音教學區Q&A for my worksMy BookMy TalksForu ...

  7. Oracle 10g 10.2.0.1 在Oracle Linux 5.4 32Bit RAC安装手冊(一抹曦阳)

    Oracle 10g 10.2.0.1 在Oracle Linux 5.4 32Bit RAC安装手冊(一抹曦阳).pdf下载地址 ,step by step http://download.csdn ...

  8. Gentoo Linux HPPA 手冊

    Gentoo Linux HPPA 手冊 Sven Vermeulen   Author Roy Marples   Author Daniel Robbins   Author Chris Hous ...

  9. Gentoo Linux 2005.0 x86 手冊

    內容: 安裝 Gentoo 這個部份將帶領您進行 Gentoo 的安裝. 關於 Gentoo Linux 安裝步驟. 不熟悉 Gentoo 的使用者並不了解 Gentoo 的選擇. 使用 Univer ...

  10. Zend_Form 创建、校验和解析表单的基础--(手冊)

    1.  创建表单对象 创建表单对象很easy:仅仅要实现 Zend_Form: <?php $form = newZend_Form; ? > 对于高级用例.须要创建 Zend_Form ...

最新文章

  1. SQL2005学习(九),将数据库备份到网络共享文件夹中
  2. Apache Shiro 1.6.0 发布!修复绕过授权高危漏洞
  3. ajax请求失败后重连和promiseIfy
  4. 从进程说起:容器到底是怎么一回事儿?
  5. N-甲基-N-亚硝基脲(MNU)与眼睛健康(思考中)
  6. python怎么安装pin库_Python库之numpy库的安装教程
  7. HDOJ 4005-The war解题报告
  8. 路径规划之RRT类算法简述
  9. 2013年C++A:买不到的数目(互质数)
  10. 【转】一些 SQLite技巧
  11. Video Caption(跨模态视频摘要/字幕生成)
  12. Excel表格输入身份证数字就变了 Excel函数公式大全 Excel表格制作
  13. Acer4552G双硬盘
  14. ThinkPad Tablet2升级Windows10(各种故障及解决方案)
  15. 一名优秀的前端大牛《司徒正美》
  16. 毕业之后才知道的——知网查重原理以及降重举例
  17. ef1a启动子_组织特异性启动子的筛选方法
  18. 超赞的新浪短网址链接生成器推荐(附t.cn短链接缩短api接口)
  19. Adobe Reader 卸载不干净处理方法
  20. excel文件无法打印提示内存不足_Mac应用程序无法打开提示不明开发者或文件损坏的处理方法...

热门文章

  1. 狂神学习系列18:Redis
  2. MVX Android设计架构浅析-MVVM
  3. 中国重汽:香港上市在十月
  4. js制作网页动态背景
  5. 关于ABAQUS2020二次开发
  6. 2018江苏高考数学第16题计算量大不大你自己看着办
  7. 江苏计算机对口高考分数线,单招好还是高考好|江苏省对口单招 历年分数线是多少?...
  8. 服务器怎么调用虚拟键盘,wincc7.0调用虚拟键盘
  9. Effective+Java+中文版
  10. WPF实现半圆形导航菜单