- 浏览: 1581171 次
- 性别:
- 来自: 厦门
文章分类
- 全部博客 (603)
- T_java (145)
- T_script&ASP (51)
- T_C/C++ (25)
- T_PowerBuilder (11)
- T_Database (53)
- T_odoo (7)
- T_应用服务器 (50)
- T_专_条形码 (6)
- T_专_负载均衡器 (4)
- T_操作系统 (94)
- T_信息安全 (41)
- T_专_搜索引擎 (14)
- T_L_PHP (58)
- T_L_Delphi (18)
- T_L_.NET、C#、VisualStudio (25)
- T_L_Objective-C (6)
- T_移动开发 (53)
- T_网络 (109)
- T_大数据 (2)
- T_嵌入式 (2)
- T_小众技术 (24)
- T_未分类 (58)
- L_旅游印记 (1)
- L_生活随笔 (48)
- L_中国文化 (18)
- L_户外与生存 (0)
最新评论
-
csbean4004:
不知道哪传来得恶习,发帖子不好好发,故意弄错一些东西,很讨厌
让HTML5支持后置摄像头 -
withthewind:
终于找到一个可以用的了。。。
如何用VBA取得Word文档中的标题前面的序号 -
busbby:
兄弟,无法下载,说文件不完整
一个好用的Outlook ost格式文件转pst文件的工具 -
yijavakevin:
密码啊~解压密码多少?
一个二维条形码组件 -
vipbooks:
你给的那个链接根本无法下载,跳到官网看了下最新版12M,但点下 ...
十步以内完成精细web打印
sqlite.js
/** A very simple Javascript layer for the web based SQLite database. example usage: var db = SQLite({ shortName: 'mydb' }); db.createTable('people', 'name TEXT, age INTEGER'); db.insert('people', { name: 'Jeremy', age: 29 }); db.update('people', { age: 30 }, { name: 'Jeremy' }); db.select('people', '*', { age: 30 }, function (results) { var x; for(x=0; x<results.rows.length; x++) { console.log(results.rows.item(x)); } }); db.destroy('people', { age: 30 }); Conditions can be: * a number: defaults to 'WHERE id=number' * a string: generates 'WHERE string' * an array: generates 'WHERE val1 AND val2' * a hash: generates 'WHERE key=hash[key] AND key2=hash[key2]' 另外的例子: function pass(results, query) { var target = document.getElementById('results'), html = target.innerHTML; target.innerHTML = html + 'pass - ' + query + '<br />'; } function fail(error, query) { var target = document.getElementById('results'), html = target.innerHTML; target.innerHTML = html + 'fail - ' + error.message + ': ' + query + '<br />'; } var db = SQLite({ shortName: 'mydb' + parseInt(Math.random() * 100000), defaultErrorHandler: fail, defaultDataHandler: pass }); db.createTable('people', 'name TEXT, age INTEGER'); db.insert('people', { name: "Jeremy", age: 29 }); db.insert('people', { name: "Tara", age: 28 }); db.update('people', { age: 30 }, { name: 'Jeremy' }); db.select('people', '*', { age: 30 }, null, function (r, q) { pass(r, q); var x; for(x=0; x<r.rows.length; x++) { console.log(r.rows.item(x)); } }); db.select('people', 'name', null, { order: 'age DESC' }, function (r, q) { pass(r, q); var x; for(x=0; x<r.rows.length; x++) { console.log(r.rows.item(x)); } }); db.select('people', 'name', null, { limit: 1 }, function (r, q) { pass(r, q); var x; for(x=0; x<r.rows.length; x++) { console.log(r.rows.item(x)); } }); db.destroy('people', { age: 30 }); 初始化参数: cfg.shortName:数据库名称,默认是 'mydatabase' cfg.version:数据库版本,默认是 '1.0' cfg.displayName:数据库显示名称,默认是 'My SQLite Database' cfg.maxSize:数据库最大占用空间,默认是 65536 cfg.defaultErrorHandler = 出错处理函数,默认是 errorHandler cfg.defaultDataHandler = 数据处理函数,默认是 nullDataHandler (即不处理) * @param {} cfg */ function SQLite(cfg) { if (typeof window.openDatabase === 'undefined') { return; } function log(str) { if (typeof console !== 'undefined') { console.log(str); } } function isNumber(val) { switch (typeof val) { case 'number': return true; case 'string': return (/^\d+$/).test(val); case 'object': return false; } } /** * 默认数据处理函数 * @param {} results */ function nullDataHandler(results) { } /** * 默认出错处理函数 * @param {} error */ function errorHandler(error) { log('Oops. ' + error.message + ' (Code ' + error.code + ')'); } var config = cfg || {}, db; config.shortName = config.shortName || 'mydatabase'; config.version = config.version || '1.0'; config.displayName = config.displayName || 'My SQLite Database'; config.maxSize = 65536; config.defaultErrorHandler = config.defaultErrorHandler || errorHandler; config.defaultDataHandler = config.defaultDataHandler || nullDataHandler; //创建数据库 try { db = openDatabase(config.shortName, config.version, config.displayName, config.maxSize); } catch (e) { if (e === 2) { log("Invalid database version."); } else { log("Unknown error " + e + "."); } return; } /** * 执行查询 * @param {} query 查询语句 * @param {} v 数据 * @param {} d 数据处理回调函数 * @param {} e 出错处理回调函数 */ function execute(query, v, d, e) { var values = v || [], dH = d || config.defaultDataHandler, eH = e || config.defaultErrorHandler; if (!query || query === '') { return; } function err(t, error) { eH(error, query); } function data(t, result) { dH(result, query); } db.transaction( function (transaction) { transaction.executeSql(query, values, data, err); } ); } /** * 构造查询条件 * @param {} conditions * @return {} */ function buildConditions(conditions) { var results = [], values = [], x; if (typeof conditions === 'string') { results.push(conditions); } else if (typeof conditions === 'number') { results.push("id=?"); values.push(conditions); } else if (typeof conditions === 'object') { for (x in conditions) { if (conditions.hasOwnProperty(x)) { if (isNumber(x)) { results.push(conditions[x]); } else { results.push(x + '=?'); values.push(conditions[x]); } } } } if (results.length > 0) { results = " WHERE " + results.join(' AND '); } else { results = ''; } return [results, values]; } function createTableSQL(name, cols) { var query = "CREATE TABLE " + name + "(" + cols + ");"; return [query, []]; } function dropTableSQL(name) { var query = "DROP TABLE " + name + ";"; return [query, []]; } function insertSQL(table, map) { var query = "INSERT INTO " + table + " (#k#) VALUES(#v#);", keys = [], holders = [], values = [], x; for (x in map) { if (map.hasOwnProperty(x)) { keys.push(x); holders.push('?'); values.push(map[x]); } } query = query.replace("#k#", keys.join(',')); query = query.replace("#v#", holders.join(',')); return [query, values]; } function updateSQL(table, map, conditions) { var query = "UPDATE " + table + " SET #k##m#", keys = [], values = [], x; for (x in map) { if (map.hasOwnProperty(x)) { keys.push(x + '=?'); values.push(map[x]); } } conditions = buildConditions(conditions); values = values.concat(conditions[1]); query = query.replace("#k#", keys.join(',')); query = query.replace("#m#", conditions[0]); return [query, values]; } function selectSQL(table, columns, conditions, options) { var query = 'SELECT #col# FROM ' + table + '#cond#', values = []; if (typeof columns === 'undefined') { columns = '*'; } else if (typeof columns === 'object') { columns.join(','); } conditions = buildConditions(conditions); values = values.concat(conditions[1]); query = query.replace("#col#", columns); query = query.replace('#cond#', conditions[0]); if (options) { if (options.limit) { query = query + ' LIMIT ?'; values.push(options.limit); } if (options.order) { query = query + ' ORDER BY ?'; values.push(options.order); } if (options.offset) { query = query + ' OFFSET ?'; values.push(options.offset); } } query = query + ';'; return [query, values]; } function destroySQL(table, conditions) { var query = 'DELETE FROM ' + table + '#c#;'; conditions = buildConditions(conditions); query = query.replace('#c#', conditions[0]); return [query, conditions[1]]; } return { database: db, createTable: function (name, cols, data, error) { var sql = createTableSQL(name, cols); execute(sql[0], sql[1], data, error); }, dropTable: function (name, data, error) { var sql = dropTableSQL(name); execute(sql[0], sql[1], data, error); }, insert: function (table, map, data, error) { var sql = insertSQL(table, map); execute(sql[0], sql[1], data, error); }, update: function (table, map, conditions, data, error) { var sql = updateSQL(table, map, conditions); execute(sql[0], sql[1], data, error); }, select: function (table, columns, conditions, options, data, error) { var sql = selectSQL(table, columns, conditions, options); execute(sql[0], sql[1], data, error); }, destroy: function (table, conditions, data, error) { var sql = destroySQL(table, conditions); execute(sql[0], sql[1], data, error); } }; }
用法:
<!DOCTYPE html> <html lang="en-us"> <head> <title>Test Suite for sqlite.js</title> <script src="sqlite.js" type="text/javascript"></script> </head> <body> <div id="results"></div> <script type="text/javascript" charset="utf-8"> function pass(results, query) { var target = document.getElementById('results'), html = target.innerHTML; target.innerHTML = html + 'pass - ' + query + '<br />'; } function fail(error, query) { var target = document.getElementById('results'), html = target.innerHTML; target.innerHTML = html + 'fail - ' + error.message + ': ' + query + '<br />'; } var db = SQLite({ shortName: 'mydb' + parseInt(Math.random() * 100000), defaultErrorHandler: fail, defaultDataHandler: pass }); db.createTable('people', 'name TEXT, age INTEGER'); db.insert('people', { name: "Jeremy", age: 29 }); db.insert('people', { name: "Tara", age: 28 }); db.update('people', { age: 30 }, { name: 'Jeremy' }); db.select('people', '*', { age: 30 }, null, function (r, q) { pass(r, q); var x; for(x=0; x<r.rows.length; x++) { console.log(r.rows.item(x)); } }); db.select('people', 'name', null, { order: 'age DESC' }, function (r, q) { pass(r, q); var x; for(x=0; x<r.rows.length; x++) { console.log(r.rows.item(x)); } }); db.select('people', 'name', null, { limit: 1 }, function (r, q) { pass(r, q); var x; for(x=0; x<r.rows.length; x++) { console.log(r.rows.item(x)); } }); db.destroy('people', { age: 30 }); </script> </body> </html>
发表评论
-
一句话实现五星评分显示
2018-06-05 08:31 951Python: rate = 1 #rate 取值 ... -
来算google的可视化编程工具——Blockly,不仅仅是玩具
2017-10-16 21:34 32772Blockly - 来自Google的可 ... -
十步以内完成精细web打印
2017-06-21 11:44 7296注意: 康虎云报表组 ... -
MySQL正则替换函数
2017-05-24 13:01 1932DELIMITER $$ CREATE FUNCTION ... -
MySQL 对比数据库表结构
2017-02-14 17:41 1270MySQL 对比数据库表结 ... -
浏览器端精准打印或套打组件
2017-01-18 13:05 6645注意: 康虎云报表 ... -
让ie6 7 8 9支持html5 websocket
2016-12-23 20:52 2207结果: 从github上的 web ... -
如何让三列div中间那个自适应宽度
2016-12-03 18:46 671效果如图: 直接上代码,具体看注释: < ... -
在MySQL中全库搜索指定字符串
2016-11-13 07:47 2487有时候,需要从整个MySQL库中搜索某一字符串,但却不知道 ... -
Sql注入之sqlmap+dvwa实例演练
2016-10-27 16:27 1493Sql注入之sqlmap+dvwa实例演练 相信 ... -
Windown下最简安装nodejs和npm
2016-06-20 21:03 642Windown下最简安装nodejs和npm 一、下 ... -
在Ubuntu 16.04上安装Odoo8(附自动安装脚本)
2016-06-09 13:02 2511在Ubuntu 16.04上安装Odoo8 一、安 ... -
ODOO9 SAAS 全自动安装脚本 基于Ubuntu 14.04 LTS
2016-05-09 10:37 2434install-odoo-saas.sh #! ... -
MySQL同类记录获取最新一条
2016-03-28 13:36 1486表结构如下: MySQL> SELECT * FRO ... -
Mybatis Generator配置详解(中文)_转
2015-12-17 16:44 873来自: http://www.jianshu.com/p/e ... -
一个提供大量数据模型的网站
2015-12-17 14:00 897网站地址是:http://www.databaseansw ... -
SQL Server Base64函数
2015-12-09 13:41 1356IF OBJECT_ID(N'dbo.c_GetUTF8Cod ... -
Node.js下载地址
2015-11-19 14:16 689http://nodejs.org/dist/ -
推荐一个Chrome扩展,Ripple Emulator
2015-09-02 16:05 813推荐一个Chrome扩展,Ripple Emulator。 ... -
Odoo安装脚本
2015-08-17 23:25 1197#!/bin/bash ################# ...
相关推荐
主要介绍了javascript封装的sqlite操作类,可实现SQLite数据库的初始化及执行SQL语句的功能,具有一定参考借鉴价值,需要的朋友可以参考下
介绍node-sqlite3 API,并对API初步封装,方便开发人员调用,实现业务逻辑。
主要介绍了js+html5操作sqlite数据库的方法,以完整实例形式分析了JavaScript封装的html5操作SQLite数据库类,并分析了具体使用技巧,需要的朋友可以参考下
数据库操作类: 支持 SQLServer mysql sqlite Sybase Oracle等DB 数据库操作类 包括执行SQL或者存储过程,返回DataSet、DataTable等功能 完全支持存储过程和参数调用 javascriptClassLibrary 包括一些JavaScript 类...
week10-database-sqlite sqlite数据库 使用sqlite数据库的示例代码,可对UI进行动态操作根据需要创建视图以处理游标数据集 ... 使用sqlite数据库的示例代码,UI使用AdapterView,因此sdk类用于创建和操作UI
构建 OracleCommand 对象(用来返回一个结果集,而不是一个整数值); 17.执行存储过程,返回影响的行数; 18.创建 OracleCommand 对象实例(用来返回一个整数值) 复制代码 6.DbHelperSQLite类 [code=csharp] 1.数据访问...
安卓上用于加载的Webview视图窗口只是作为类浏览器而存在,在安卓上更是只能同时运行一个Webview。(2)跨域数据交互问题。不同的Webview之间无法共享数据。(3)页面自适应问题。页面难以兼容适应不同分辨率的设备...
开发助手是一款面向开发人员的辅助工具,它集数据库管理(目前支持sqlserver,sqlite,mysql,postgresql),代码生成(支持从数据库生成实体映射类,数据库操作DAL中间层),数据库文档生成,代码收藏夹(支持C#,SQL,...
5.2 创建一个简单类 71 5.3 PHP5与PHP4的差异 72 5.4 定义属性和方法 72 5.4.1 属性与方法的定义 72 5.4.2 传统的构造函数 73 5.4.3 PHP类中的一些特殊方法 74 5.5 类的引用、扩展与继承 75 5.5.1 类的引用 75 5.5.2...
现在每个方法都自己开启和关闭事务,暂时还不支持在一个事务中做多个操作然后统一提交事务. * (三)作者寄语: * 昔日有JavaScript借Java发展,今日也希望AHibernate借Hibernate之名发展. * 希望这个项目...
当我向别人说起Android时,他们的第一个疑问通常是:我们为什么还需要另一个移动标准?它有何惊人之处? 虽然Android的一些特性并非首创,但它是第一个将以下特性结合在一起的环境。 基于Linux,真正开放、...
前端:Vue.js,一个渐进式JavaScript框架,用于构建用户界面。易于上手,灵活且高效,可以与其他库或现有项目一起使用。 数据库:可能使用的是MySQL或SQLite等,用于存储商品信息、用户数据等。 服务器:可能使用了...
一个轻量级JavaScript日期库,用于解析,验证,操作和格式化日期。 只需调用基于HTTP的API。 实施批处理操作。 创建和操作位图图像。 在您的NativeScript应用中使用的电子邮件插件。 您可以使用它来撰写电子邮件,...
一个.net发送HTTP数据实体的类 按键跳转以及按Enter以不同参数提交,及其他感应事件 动态控制Page页的Head信息 SubmitOncePage:解决刷新页面造成的数据重复提交问题 SharpRewriter:javascript + xml技术利用#实现...
58:快速设计一个企业网站之BIWEB 59:关于BIWEB常见问题和结构分析 60:PHP与数据库代码开发规范 61:PHP+Mysql新闻系统的开发一 62:PHP+Mysql新闻系统的开发二 63:PHP+Mysql新闻系统的开发三 64:PHP+Mysql新闻...
中国自主研发cos操作系统 前端开发 Javascript和CSS浏览器兼容总结 盘点2013:最优秀的HTML5&CSS3设计 浏览器中关于事件的那点事儿 了解Json 和XML 常用CSS优化总结——网络性能与语法性能建议 编程语言 2013流行...
2.3 创建第一个Android项目——HeUoAndroid 2.3.1 创建HelloAndroid项目 2.3.2 运行HelloAndroid及模拟器的使用 2.3.3 调试HelloAndroid 2.4 小结 第二部分 基础篇 第3章 Android程序设计基础 3.1 Android程序框架 ...
有了这款基于JavaScript的ASP开源MVC框架,你的asp老项目有可以焕发青春活力了!其实不伦是asp,php,java还是python,任何一种编程语言,只要是开源的,就可以不断更新,获得延续的生命力。 单文件入口。Single entry...