- 浏览: 24031 次
- 性别:
- 来自: 吉林
-
最新评论
-
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 950在IE浏览器下可以由JS程序调用垃圾回收函数CollectGa ... -
open-flash-chart 2
2012-09-22 22:40 808最近研究了open-flash-chart2这个报表组件,组件 ... -
[转]createElement与createDocumentFragment的点点差别
2012-09-08 21:33 2617在DOM操纵里,createElement是创建一个新的节点, ... -
一段优美的正则
2012-09-08 20:42 1305记录下来,一段优美的 ... -
原生的DOM选择器
2012-09-08 15:38 3144说说下面几个方法: getElementById, getEl ... -
IE 中的id 与name
2012-09-07 16:09 2109火星浏览器(IE)又抽风了表现如下,在IE7下,使用docum ... -
compareDocumentPosition与contains
2012-09-07 13:26 1680研究KISSY 1.3RC源代码DOM/traversal 发 ... -
tabindex
2012-09-06 17:26 0http://www.cnblogs.com/rubylouv ... -
IE的href 设值BUG
2012-09-06 17:21 1357今天研究KISSY1.3 RC源代码时看到这样一段代码,如下: ... -
IE下的条件编译
2012-09-06 14:24 994在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 976javascript的闭包特性非常强大,但也常常成为bug的滋 ... -
javascript作用域
2011-08-22 19:37 757今天看到一篇非常帮的文章,博主仅使用几个例子就将javascr ... -
框架结构锁屏实现
2011-08-22 19:30 1871如果大家不知道什么是锁屏,可以去163信箱看一看,用途是你 ... -
SWFObject
2011-08-04 16:17 926SWFObject: 基于Javascript的Flash媒体 ... -
JavaScript原型链
2011-07-29 16:18 1576声明,文章中用到的专业名词可能并不标准。请同学指正。 ...
相关推荐
DeepSeek行业应用实践报告-智灵动力【PPT全】
项目工程资源经过严格测试运行并且功能上ok,可实现复现复刻,拿到资料包后可实现复现出一样的项目,本人系统开发经验充足(全栈全领域),有任何使用问题欢迎随时与我联系,我会抽时间努力为您解惑,提供帮助 【资源内容】:包含源码+工程文件+说明等。答辩评审平均分达到96分,放心下载使用!可实现复现;设计报告也可借鉴此项目;该资源内项目代码都经过测试运行,功能ok 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 【提供帮助】:有任何使用上的问题欢迎随时与我联系,抽时间努力解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 下载后请首先打开说明文件(如有);整理时不同项目所包含资源内容不同;项目工程可实现复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用
项目工程资源经过严格测试运行并且功能上ok,可实现复现复刻,拿到资料包后可实现复现出一样的项目,本人系统开发经验充足(全栈全领域),有任何使用问题欢迎随时与我联系,我会抽时间努力为您解惑,提供帮助 【资源内容】:包含源码+工程文件+说明等。答辩评审平均分达到96分,放心下载使用!可实现复现;设计报告也可借鉴此项目;该资源内项目代码都经过测试运行,功能ok 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 【提供帮助】:有任何使用上的问题欢迎随时与我联系,抽时间努力解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 下载后请首先打开说明文件(如有);整理时不同项目所包含资源内容不同;项目工程可实现复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用
基于Android和TensorFlow Lite完成移动端机器学习相关应用的实现,包括使用已训练模型的机器学习应用和自主模型训练两部分。.zip项目工程资源经过严格测试运行并且功能上ok,可实现复现复刻,拿到资料包后可实现复现出一样的项目,本人系统开发经验充足(全栈全领域),有任何使用问题欢迎随时与我联系,我会抽时间努力为您解惑,提供帮助 【资源内容】:包含源码+工程文件+说明等。答辩评审平均分达到96分,放心下载使用!可实现复现;设计报告也可借鉴此项目;该资源内项目代码都经过测试运行,功能ok 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 【提供帮助】:有任何使用上的问题欢迎随时与我联系,抽时间努力解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 下载后请首先打开说明文件(如有);整理时不同项目所包含资源内容不同;项目工程可实现复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用
这是一个基于 PyQt5 和 TensorFlow 的多数字手写体识别程序,支持同时识别图片中的多个手写数字。以下是该文件的基本说明: 主窗口:包含加载图片、识别、清除按钮,以及图片显示区域和结果展示区域。 图片显示:支持显示原始图片和处理后的图片。 分割结果显示:显示分割出的每个数字图片。 结果展示:显示所有识别结果和置信度。
项目工程资源经过严格测试运行并且功能上ok,可实现复现复刻,拿到资料包后可实现复现出一样的项目,本人系统开发经验充足(全栈全领域),有任何使用问题欢迎随时与我联系,我会抽时间努力为您解惑,提供帮助 【资源内容】:包含源码+工程文件+说明等。答辩评审平均分达到96分,放心下载使用!可实现复现;设计报告也可借鉴此项目;该资源内项目代码都经过测试运行,功能ok 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 【提供帮助】:有任何使用上的问题欢迎随时与我联系,抽时间努力解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 下载后请首先打开说明文件(如有);整理时不同项目所包含资源内容不同;项目工程可实现复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用
在云服务器上搭建MQTT服务器(超详细,一步到位)
资源内项目源码是均来自个人的课程设计、毕业设计或者具体项目,代码都测试ok,都是运行成功后才上传资源,答辩评审绝对信服的,拿来就能用。放心下载使用!源码、说明、论文、数据集一站式服务,拿来就能用的绝对好资源!!! 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、大作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 4、如有侵权请私信博主,感谢支持
参考项目,评分9.8分
项目工程资源经过严格测试运行并且功能上ok,可实现复现复刻,拿到资料包后可实现复现出一样的项目,本人系统开发经验充足(全栈全领域),有任何使用问题欢迎随时与我联系,我会抽时间努力为您解惑,提供帮助 【资源内容】:包含源码+工程文件+说明等。答辩评审平均分达到96分,放心下载使用!可实现复现;设计报告也可借鉴此项目;该资源内项目代码都经过测试运行,功能ok 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 【提供帮助】:有任何使用上的问题欢迎随时与我联系,抽时间努力解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 下载后请首先打开说明文件(如有);整理时不同项目所包含资源内容不同;项目工程可实现复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用
基于FX3U PLC控制多种变频器的RTU通信系统:硬件配置、程序编写、接线及参数说明,基于FX3U PLC与RTU通信技术,实现对西门子V20、台达VFD-M和三菱E700变频器的独立控制:硬件配置与程序详解,fx3u和西门子v20 台达vfd-m 三菱E700 rtu所需硬件:FX3U PLC,FX3U-485BD通信板,变频器。 功能:使用fx3u-485bd板,rtu通信控制西门子v20 台达VFD-M 三菱E700三种变频器正反转,停止,频率设定,加减速,以及对频率,电压,电流的读取,有运行指示,效果可以看视频,反应及时,运行可靠,三种变频器程序是单个的,非三台一起控制。 的内容包括程序,接线,参数说明 ,核心关键词: fx3u-485bd; 西门子v20; 台达VFD-M; 三菱E700; 通信控制; 正反转; 停止; 频率设定; 加减速; 读取; 运行指示; 视频; 程序; 接线; 参数说明,FX3U PLC控制多种变频器程序:程序、接线与参数说明
软件开发综合项目——辛德瑞拉婚纱礼服定制网站,使用SSM框架和Maven管理工具,开发环境为Eclipse Jee Photon,数据库使用MySQL.zip项目工程资源经过严格测试运行并且功能上ok,可实现复现复刻,拿到资料包后可实现复现出一样的项目,本人系统开发经验充足(全栈全领域),有任何使用问题欢迎随时与我联系,我会抽时间努力为您解惑,提供帮助 【资源内容】:包含源码+工程文件+说明等。答辩评审平均分达到96分,放心下载使用!可实现复现;设计报告也可借鉴此项目;该资源内项目代码都经过测试运行,功能ok 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 【提供帮助】:有任何使用上的问题欢迎随时与我联系,抽时间努力解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 下载后请首先打开说明文件(如有);整理时不同项目所包含资源内容不同;项目工程可实现复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用
项目工程资源经过严格测试运行并且功能上ok,可实现复现复刻,拿到资料包后可实现复现出一样的项目,本人系统开发经验充足(全栈全领域),有任何使用问题欢迎随时与我联系,我会抽时间努力为您解惑,提供帮助 【资源内容】:包含源码+工程文件+说明等。答辩评审平均分达到96分,放心下载使用!可实现复现;设计报告也可借鉴此项目;该资源内项目代码都经过测试运行,功能ok 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 【提供帮助】:有任何使用上的问题欢迎随时与我联系,抽时间努力解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 下载后请首先打开说明文件(如有);整理时不同项目所包含资源内容不同;项目工程可实现复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用
惠普436/437更换传输卷
erlang安装包,rabbmit安装环境
项目工程资源经过严格测试运行并且功能上ok,可实现复现复刻,拿到资料包后可实现复现出一样的项目,本人系统开发经验充足(全栈全领域),有任何使用问题欢迎随时与我联系,我会抽时间努力为您解惑,提供帮助 【资源内容】:包含源码+工程文件+说明等。答辩评审平均分达到96分,放心下载使用!可实现复现;设计报告也可借鉴此项目;该资源内项目代码都经过测试运行;功能ok 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 【提供帮助】:有任何使用上的问题欢迎随时与我联系,抽时间努力解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 下载后请首先打开说明文件(如有);整理时不同项目所包含资源内容不同;项目工程可实现复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用
项目工程资源经过严格测试运行并且功能上ok,可实现复现复刻,拿到资料包后可实现复现出一样的项目,本人系统开发经验充足(全栈全领域),有任何使用问题欢迎随时与我联系,我会抽时间努力为您解惑,提供帮助 【资源内容】:包含源码+工程文件+说明等。答辩评审平均分达到96分,放心下载使用!可实现复现;设计报告也可借鉴此项目;该资源内项目代码都经过测试运行;功能ok 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 【提供帮助】:有任何使用上的问题欢迎随时与我联系,抽时间努力解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 下载后请首先打开说明文件(如有);整理时不同项目所包含资源内容不同;项目工程可实现复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用
IDC报告 -中小型企业如何利用技术实现关键业务目标 数字化转型的后续步骤
主要介绍如何用HAL_SPI_TransmitReceive()函数实现对W25Q128 Flash存储器ID的读取。先介绍SPI是一种高速且简单的同步串行接口技术,由四根线((MOSI、MISO、SCLK和SS/CS))组成。接着介绍Flash ,它是串行闪存芯片,能提供更大存储容量。还提到STM32 HAL库简化了SPI编程,以正点原子精英V2开发板为例,给出开发环境及函数原型和参数。最后展示读取ID的代码示例,通过发送命令、接收数据并判断状态来获取ID。