zoukankan      html  css  js  c++  java
  • Jquery 实现json复杂查询等操作(jsonDB)

    一、jsonDB

    下载地址:https://github.com/ThinkerCodeChina/jsonDB

    jsonDB是js的一个类库,实现使用SQL语句对json数据增删改查。
    jsonDB的构建源自于HTML5本地存储的一个应用需求,可以通过sql对json数据进行增删改查,同时该类库提供强大的where检索条件,数据排序,limit查询条件限制等数据库基本功能。
    通过jsonDB可以轻松维护一个库/表或多个库/表,而无需额外实现json的数据的维护等,在该类库完善以后为简化sql操作,基于jsonDB核心模块扩展了连贯操作模型,简化对jsonDB的操作以及sql语句出错的概率。

    二、当前版本的不足:

    1.无法支持查询字段运算 
    2.不支持对没有选取的查询字段排序 
    3.只支持单个字段排序,无法进行组合排序操作 
    4.update、delete语句不支持order by子句,导致limit子句功能弱化 
    5.编写where条件是必须使用()包含where条件 
    6.无法选取深层次的字段作为返回字段 
    7.没有错误或异常解决方案 
    8.不支持外部扩展 

    三、jsonDB基础应用示例:

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

    四、jsonDB的高级应用示例:

     1 //向数据表插入一条数据
     2 DB.table('user').add({username:'王帅',sex:'男',birthday:{year:1995,month:10,day:23}});
     3 
     4 //查询所有人出生日期,并按出生年排序,由于之前使用table('user')定义为user表,所以可以省略,table方法定义是一直有效的,除非是重新设定了
     5 var result = DB.field('username,birthday').order('birthday.year').select();
     6 //查询结果  [{"username":"李红","birthday":{"year":1991,"month":9,"day":22}},{"username":"王帅","birthday":{"year":1995,"month":10,"day":23}},{"username":"张三","birthday":{"year":2000,"month":6,"day":18}}]
     7 
     8 //先插入一些数据,方便后面的检索操作
     9 DB.table('user').add({username:'李亨',sex:'男',birthday:{year:2008,month:8,day:8}})
    10 .add({username:'张琦',sex:'男',birthday:{year:1990,month:10,day:23}})
    11 .add({username:'李媛芳',sex:'女',birthday:{year:1985,month:2,day:28}})
    12 .add({username:'李果果',sex:'女',birthday:{year:2002,month:3,day:15}})
    13 .add({username:'张源',sex:'男',birthday:{year:2005,month:12,day:5}})
    14 .add({username:'王丽娜',sex:'女',birthday:{year:1992,month:5,day:12}});
    15 
    16 //高级查询之模糊搜索
    17 //查询所有李姓成员(正则查找法)
    18 var result = DB.field(["username"]).where('username.match(/^李/)').select();
    19 //查询结果[{"username":"李红"},{"username":"李亨"},{"username":"李媛芳"},{"username":"李果果"}]
    20 
    21 //查询所有李姓成员(字符串搜索法)
    22 var result = DB.field(["username"]).where('username.indexOf("李")=0').select();
    23 //查询结果[{"username":"李红"},{"username":"李亨"},{"username":"李媛芳"},{"username":"李果果"}]
    24 
    25 //查询所有在1990年到1995年出生的人
    26 var result = DB.field(["username","birthday"]).where('birthday.year>=1990 and birthday.year<=1995').order('birthday.year').select();
    27 //查询结果:[{"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}}]
  • 相关阅读:
    Educational Codeforces Round 85 D. Minimum Euler Cycle(模拟/数学/图)
    Educational Codeforces Round 85 C. Circle of Monsters(贪心)
    NOIP 2017 提高组 DAY1 T1小凯的疑惑(二元一次不定方程)
    Educational Codeforces Round 85 B. Middle Class(排序/贪心/水题)
    Educational Codeforces Round 85 A. Level Statistics(水题)
    IOS中的三大事件
    用Quartz 2D画小黄人
    strong、weak、copy、assign 在命名属性时候怎么用
    用代码生成UINavigationController 与UITabBarController相结合的简单QQ框架(部分)
    Attempting to badge the application icon but haven't received permission from the user to badge the application错误解决办法
  • 原文地址:https://www.cnblogs.com/ding2011/p/4582779.html
Copyright © 2011-2022 走看看