- 浏览: 23639 次
- 性别:
- 来自: 吉林
最新评论
-
zhangfan1990:
楼主的文章有启发啊
JavaScript原型链 -
s2640226szm:
写的不错,理解了原型链
JavaScript原型链
TrimQuery引擎是TrimPath开源项目的一个轻量组件,遵守GPL & APL开源协议。 它可以为你的客户端程序提供使用sql的能力。
TrimQuery引擎是使用javascript编写的,源代码大约900多行。最新版本号为1.1.14
项目托管在google code。地址:http://code.google.com/p/trimpath/
TrimQuery引擎支持类似于SQL的语法有:
INSERT, UPDATE, DELETE
SELECT ... FROM
WHERE ...
LIKE ...
ORDER BY ... ASC/DESC
AS ...
GROUP BY ... HAVING ...
SUM, COUNT, AVG 聚合函数
自联接(self join)
LIMIT和偏移量
“?”占位符(类似JAVA JDBC的中的方式)
不支持的SQL语法:
BETWEEN
IN (for lists and for sub-queries or nested SELECT's)
ANY
EXISTS
DISTINCT
AVG DISTINCT, SUM DISTINCT, COUNT DISTINCT
LEFT OUTER JOIN
RIGHT OUTER JOIN
FULL OUTER JOIN
UNION, EXCEPT, INTERSECT
下面通过一个简单的例子了解TrimQuery(代码在附件中文件 TrimQueryDemo.html)
<!DOCTYPE > <html> <head> <title>TrimQuery Demo</title> </head> <script type="text/javascript" src="trimpath-query-1.1.14.js"></script> <script type="text/javascript" src="json.js"></script> <script type="text/javascript"> //定义表结构 var columnDefs = { Invoice : { id : { type: "String" }, total : { type: "Number" }, custId : { type: "String" } }, Customer : { id : { type: "String" }, acctBalance : { type: "Number" } } }; //表数据 var tableData = { Invoice : [{ id: 1, total: 100, custId: 10 },{ id: 2, total: 200, custId: 10 },{ id: 3, total: 300, custId: 10 },{ id: 4, total: 400, custId: 20 } ], Customer : [{ id: 10, acctBalance: 1000 },{ id: 20, acctBalance: 2000 },{ id: 30, acctBalance: 3000 } ] }; //首先我们预编译查询表。 var queryLang = TrimPath.makeQueryLang(columnDefs); // 下面我们做一个查询。 var statement = queryLang.parseSQL( "SELECT Customer.id, Customer.acctBalance, Invoice.total " + "FROM Customer, Invoice " + "WHERE Customer.id = Invoice.custId " + "ORDER BY Customer.id ASC"); // 运行查询语句在指定的数据集中查询结果集。 var results = statement.filter(tableData); //输出查询结果 alert(results.toJSONString()); // 此外我们可可以获取查询语句。 alert(statement.toString()); </script> <body> </body> </html>
通过上例相信大家已经看出了里面的道道,使用TrimQuery首先要有表的定义,然后要有表数据,最后通过查询语句获得结果集。
下面详细介绍下TrimQuery中提供的方法(API)
TrimPath是一个全局对象,在这个对象中包含有TrimQuery方法。
TrimPath.makeQueryLang(表定义) :用于预声明 要操作的表结构。也就是确定操作的范围。该函数返回一个queryLang 对象,这个对象下包括一系列的SQL操作方法。如果多次使用相同的参数调用TrimPath.makeQueryLang方法,将会生成多个不同的queryLang 对象。参数格式如例子中columnDefs定义的格式
queryLang.parseSQL(sqlString,optionalParamsArray):方法用于声明执行的SQL语句。第一个参数是SQL语句字符串,第二个参数为可选参数,支持"?"替换,防止脚本注入。如果SQL语句不符合语法则会抛出异常。方法会返回一个selectStatement 对象,通过这个对象就可以查询了。
包括第二个参数的例子:
selectStatement = queryLang.parseSQL( "SELECT Customer.* FROM Customer " + "WHERE Customer.acctBalance > ? " + "AND Customer.acctBalance < ?" , [ minBalance, maxBalance ]);
selectStatement.filter( tableData, options ):方法用于执行SQL语句。第一个参数是作用的表数据集,格式如例子中的tableData ,第二个参数可选,我这里就不介绍了。返回结果集是一个JSON对象。
selectStatement.toString():方法返回一个String表示selectStatement对象的SQL。
再说说TrimQuery的SQL语法需要注意的点
TrimQuery的所有关键字必须大写。
列必须使用TableName.columnName点缀语法指定
TrimQuery不支持复杂的函数。
下面列出TrimQuery SQL的示例:
//查询全表 SELECT * FROM Invoice //查询全表 SELECT Invoice.* FROM Invoice //查询指定列 SELECT Invoice.id, Invoice.total FROM Invoice //两表联合查询 SELECT Invoice.id, Invoice.total, Customer.acctBalance FROM Invoice, Customer //量表联合查询使用 * SELECT Invoice.*, Customer.* FROM Invoice, Customer //使用AS 为表重命名 SELECT i.* FROM Invoice AS i //使用AS为列重命名 SELECT i.id AS ID_NUM FROM Invoice AS i //量表联合查询中使用AS SELECT Invoice.*, i2.* FROM Invoice, Invoice AS i2 //两表联合查询使用 关联条件 过滤 SELECT Customer.id, Invoice.custId, Invoice.total, Customer.acctBalance FROM Invoice, Customer WHERE Invoice.custId = Customer.id //两表联合查询使用 关联条件 过滤条件 过滤 SELECT Customer.id, Invoice.custId, Invoice.total, Customer.acctBalance FROM Invoice, Customer WHERE Invoice.total < 250 AND Invoice.custId = Customer.id // 使用ORDER BY 语句为结果集排序 SELECT Invoice.id FROM Invoice ORDER BY Invoice.id //指定排序规则 为升序 SELECT Invoice.id FROM Invoice ORDER BY Invoice.id ASC //指定排序规则为降序 SELECT Invoice.id FROM Invoice ORDER BY Invoice.id DESC //使用多列作为排序列 SELECT Invoice.custId, Invoice.id FROM Invoice ORDER BY Invoice.custId DESC, Invoice.id //获取前100条数据 SELECT Refund.* FROM Refund LIMIT 100 //获取从100到 100 + 50的数据 SELECT Refund.* FROM Refund LIMIT 100, 50 //使用集合函数 SELECT Invoice.total, SUM (Invoice.total) AS SUM_total, COUNT (Invoice.total) AS COUNT_total, AVG (Invoice.total) AS AVG_total FROM Invoice //使用GROUP BY 语法 SELECT Invoice.total, SUM (Invoice.total) AS SUM_total, COUNT (Invoice.total) AS COUNT_total, AVG (Invoice.total) AS AVG_total FROM Invoice GROUP BY Invoice.custId //使用 GROUP BY 与 ORDER BY SELECT Invoice.total, SUM (Invoice.total) AS SUM_total FROM Invoice GROUP BY Invoice.custId ORDER BY SUM_total ASC //使用 HAVING SELECT Invoice.total AS TOT, SUM (Invoice.total) AS SUM_total FROM Invoice GROUP BY Invoice.custId HAVING (TOT) > 15000 ORDER BY SUM_total ASC //使用LIKE SELECT * FROM User WHERE User.name LIKE 'P%' //插入数据 INSERT INTO Event (id, date, invoice_id) VALUES (1, '2003-01-31', 43) //更新数据 UPDATE User SET name='Frank Thomas' WHERE User.id = '3' //删除数据 DELETE Thing FROM Thing WHERE Thing.id = '1'
好啦就些这么多。
- TrimQueryDemo.zip (14.8 KB)
- 下载次数: 8
发表评论
-
js 垃圾回收
2012-10-06 11:42 900在IE浏览器下可以由JS程序调用垃圾回收函数CollectGa ... -
open-flash-chart 2
2012-09-22 22:40 794最近研究了open-flash-chart2这个报表组件,组件 ... -
[转]createElement与createDocumentFragment的点点差别
2012-09-08 21:33 2582在DOM操纵里,createElement是创建一个新的节点, ... -
一段优美的正则
2012-09-08 20:42 1283记录下来,一段优美的 ... -
原生的DOM选择器
2012-09-08 15:38 3132说说下面几个方法: getElementById, getEl ... -
IE 中的id 与name
2012-09-07 16:09 2090火星浏览器(IE)又抽风了表现如下,在IE7下,使用docum ... -
compareDocumentPosition与contains
2012-09-07 13:26 1669研究KISSY 1.3RC源代码DOM/traversal 发 ... -
tabindex
2012-09-06 17:26 0http://www.cnblogs.com/rubylouv ... -
IE的href 设值BUG
2012-09-06 17:21 1349今天研究KISSY1.3 RC源代码时看到这样一段代码,如下: ... -
IE下的条件编译
2012-09-06 14:24 949在IE浏览器下,可以把部分只针对IE的javascript代码 ... -
判断IE5~IE7
2012-09-06 14:17 0判断IE5~7可以通过检测:document.document ... -
property 和attribute
2012-09-06 13:22 0aaaasdfaaaaa -
KISSY1.3.0RC源码分析一Kissy.js
2012-08-25 18:28 0kissy.js从名字即可以看出它是kissy框架最核心的文件 ... -
javascript闭包
2011-08-22 19:44 935javascript的闭包特性非常强大,但也常常成为bug的滋 ... -
javascript作用域
2011-08-22 19:37 733今天看到一篇非常帮的文章,博主仅使用几个例子就将javascr ... -
框架结构锁屏实现
2011-08-22 19:30 1855如果大家不知道什么是锁屏,可以去163信箱看一看,用途是你 ... -
SWFObject
2011-08-04 16:17 884SWFObject: 基于Javascript的Flash媒体 ... -
JavaScript原型链
2011-07-29 16:18 1556声明,文章中用到的专业名词可能并不标准。请同学指正。 ...
相关推荐
电动车上牌管理系统 SSM毕业设计 附带论文 启动教程:https://www.bilibili.com/video/BV1GK1iYyE2B
tornado-6.1-cp39-cp39-manylinux2010_x86_64.whl
一、项目简介 本项目是一套基于Java Swing 开发的网吧管理系统,主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的Java学习者。 包含:项目源码、数据库脚本等,该项目附带全部源码可作为毕设使用。 项目都经过严格调试,确保可以运行! 该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值。 二、技术实现 后台技术:java swing 数据库:MySQL 数据库连接池:c3p0 三、系统主要功能 用户登录: 分为 普通用户和管理员 两种角色 菜单模块:上机,下机, 系统设置:管理员设置,会员设置,计费设置, 退出系统 管理模块:增加会员,删除会员,信息修改,信息查询 视图模块:主页视图,在线用户,统计视图, 统计报表模块:人数报表,收入报表 帮助模块:联系我们,关于系统 详见:https://blog.csdn.net/weixin_43860634/article/details/125247764
使用软件自带的basic脚本编辑制作的脚本 低版本软件无法输出Excel报告,可以通过脚本方式实现这一功能
项目经过测试均可完美运行! 环境说明: 开发语言:java jdk:jdk1.8 数据库:mysql 5.7+ 数据库工具:Navicat11+ 管理工具:maven 开发工具:idea/eclipse
基于java的网上电子书店h答辩PPT.pptx
基于微信小程序的微信小程序校园失物招领答辩PPT.pptx
基于java的基于Java的学生综合测评管理系统答辩PPT.pptx
pandas whl安装包,对应各个python版本和系统(具体看资源名字),找准自己对应的下载即可! 下载后解压出来是已.whl为后缀的安装包,进入终端,直接pip install pandas-xxx.whl即可,非常方便。 再也不用担心pip联网下载网络超时,各种安装不成功的问题。
去
管理员功能: 用户管理:管理员可以管理用户账户,包括审核新注册用户、禁用违规用户、重置密码等操作。 器材管理:管理员可以管理器材的信息,包括添加新器材、编辑器材详情、设定器材规则和限制等。 器材预约与借还管理:管理员可以处理用户的器材预约请求,确认或调整预约时间,并记录借还操作。 库存管理:管理员可以监控器材库存情况,及时补充不足的器材并处理损坏或报废的器材。 数据统计与报表:管理员可以分析系统的使用情况和借还记录,生成数据统计报表以了解器材使用情况和借还频率等。 系统设置与维护:管理员可以进行系统设置,包括配置器材规则、设定可用时间段、备份数据、优化系统性能等。 消息通知与提醒:管理员可以向用户发送消息通知,如器材预约成功、归还提醒、系统更新通知等。
Jira插件安装包Dynamic-forms
pandas whl安装包,对应各个python版本和系统(具体看资源名字),找准自己对应的下载即可! 下载后解压出来是已.whl为后缀的安装包,进入终端,直接pip install pandas-xxx.whl即可,非常方便。 再也不用担心pip联网下载网络超时,各种安装不成功的问题。
Scratch是一款由麻省理工学院(MIT)的“终身幼儿园团队”开发的图形化编程工具,专为儿童设计,旨在帮助他们学习编程思维和逻辑能力。
基于java的学生就业管理系统答辩PPT.pptx
本压缩包资源说明,你现在往下拉可以看到压缩包内容目录 我是批量上传的基于SpringBoot+Vue的项目,所以描述都一样;有源码有数据库脚本,系统都是测试过可运行的,看文件名即可区分项目~ |Java|SpringBoot|Vue|前后端分离| 开发语言:Java 框架:SpringBoot,Vue JDK版本:JDK1.8 数据库:MySQL 5.7+(推荐5.7,8.0也可以) 数据库工具:Navicat 开发软件: idea/eclipse(推荐idea) Maven包:Maven3.3.9+ 系统环境:Windows/Mac
随着社会对志愿服务活动的日益重视,各大高校也纷纷参与到志愿服务的行列中。为了更好地管理和记录志愿者活动,提高志愿服务的质量和效率,我们开发了这款大学志愿服务系统。 该系统主要包括多个功能模块,如信息管理、活动管理、学生管理等。信息管理模块允许学校管理员录入、修改和删除学校的基本信息,包括学校账号、名称、联系电话、地址、特色以及办学理念等,确保信息的准确性和完整性。活动管理模块则用于记录和管理志愿者活动的相关信息,包括活动的名称、时间、地点、参与人员等,方便志愿者进行报名和签到。 此外,系统还提供了学生管理模块,用于记录学生的志愿服务经历和表现,为学生参与志愿服务提供便利。同时,系统还支持照片上传和展示功能,通过展示志愿者活动的照片,让更多人了解和关注志愿服务事业。 整个系统界面简洁明了,操作便捷,功能强大。通过使用该系统,高校可以更加高效地管理和记录志愿者活动,提高志愿服务的整体水平。同时,该系统也为广大志愿者提供了一个展示自我、服务社会的平台。
turbo均衡算法研究
https://blog.csdn.net/aggs1990/article/details/143491823 静态编译的Qt6.7.3(win10+MSVC2022+openssl+静态运行时) 压缩包比较大,这是第一部分