- 浏览: 1613313 次
- 性别:
- 来自: 厦门
文章分类
- 全部博客 (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 999Python: rate = 1 #rate 取值 ... -
来算google的可视化编程工具——Blockly,不仅仅是玩具
2017-10-16 21:34 33165Blockly - 来自Google的可 ... -
十步以内完成精细web打印
2017-06-21 11:44 7394注意: 康虎云报表组 ... -
MySQL正则替换函数
2017-05-24 13:01 1982DELIMITER $$ CREATE FUNCTION ... -
MySQL 对比数据库表结构
2017-02-14 17:41 1324MySQL 对比数据库表结 ... -
浏览器端精准打印或套打组件
2017-01-18 13:05 6706注意: 康虎云报表 ... -
让ie6 7 8 9支持html5 websocket
2016-12-23 20:52 2324结果: 从github上的 web ... -
如何让三列div中间那个自适应宽度
2016-12-03 18:46 723效果如图: 直接上代码,具体看注释: < ... -
在MySQL中全库搜索指定字符串
2016-11-13 07:47 2564有时候,需要从整个MySQL库中搜索某一字符串,但却不知道 ... -
Sql注入之sqlmap+dvwa实例演练
2016-10-27 16:27 1606Sql注入之sqlmap+dvwa实例演练 相信 ... -
Windown下最简安装nodejs和npm
2016-06-20 21:03 690Windown下最简安装nodejs和npm 一、下 ... -
在Ubuntu 16.04上安装Odoo8(附自动安装脚本)
2016-06-09 13:02 2584在Ubuntu 16.04上安装Odoo8 一、安 ... -
ODOO9 SAAS 全自动安装脚本 基于Ubuntu 14.04 LTS
2016-05-09 10:37 2497install-odoo-saas.sh #! ... -
MySQL同类记录获取最新一条
2016-03-28 13:36 1544表结构如下: MySQL> SELECT * FRO ... -
Mybatis Generator配置详解(中文)_转
2015-12-17 16:44 925来自: http://www.jianshu.com/p/e ... -
一个提供大量数据模型的网站
2015-12-17 14:00 997网站地址是:http://www.databaseansw ... -
SQL Server Base64函数
2015-12-09 13:41 1433IF OBJECT_ID(N'dbo.c_GetUTF8Cod ... -
Node.js下载地址
2015-11-19 14:16 741http://nodejs.org/dist/ -
推荐一个Chrome扩展,Ripple Emulator
2015-09-02 16:05 892推荐一个Chrome扩展,Ripple Emulator。 ... -
Odoo安装脚本
2015-08-17 23:25 1247#!/bin/bash ################# ...
相关推荐
首先定义了一个包含多条创建表SQL语句的数组`tbs`,然后创建了一个SQLite操作类的实例`db`,并调用`query`方法执行插入和查询操作。例如,在插入操作中使用占位符`?`来防止SQL注入,并在查询操作中,通过回调函数...
在Node.js环境中,SQLite3是一个常用的轻量级数据库,它不需要单独的服务进程,可以直接在内存中或磁盘上创建数据库文件。本篇文章将深入探讨如何使用`node-sqlite3`库来操作SQLite3数据库,并对其进行封装,以便于...
通过JavaScript,我们可以创建一个SQLite数据库,定义表结构,并执行SQL语句。 1. **创建数据库**: 使用`openDatabase`函数创建数据库。例如: ```javascript var db = openDatabase("MyDB", "1.0", "Demo DB",...
在本文中,我们将使用 JavaScript 封装一个 HTML5 操作 SQLite 数据库的类,称为 `lanxDB`。该类提供了对 SQLite 数据库的基本操作,包括创建表、插入数据、切换表等。 lanxDB 类的方法 getDBName 方法 `...
以下是一些关键的SQLite操作示例: 1. **打开数据库**: ```csharp string dbPath = Application.dataPath + "/Resources/MyDatabase.db"; SQLiteConnection conn = new SQLiteConnection(dbPath); conn.Open()...
在IT行业中,Adobe AIR(Adobe Integrated Runtime)是一个跨平台的应用程序运行环境,允许开发者使用Flash、Flex、HTML和JavaScript等技术构建桌面应用程序。本示例着重于“Air Flex Sqlite通信”,即如何在Adobe ...
本资源利用Flask和SQLite数据库创建了一个学生信息管理系统,非常适合初学者进行实践和学习。 首先,让我们详细了解Flask。Flask是一个基于Werkzeug WSGI工具箱和Jinja2模板引擎的微框架。它的“微”意味着核心非常...
【jQuery】是一个JavaScript库,极大地简化了JavaScript编程,特别是在DOM操作、事件处理和Ajax交互方面。在Web项目中,jQuery通常用于动态更新页面内容,实现用户友好的交互效果,如表格排序、下拉菜单、弹出框等。...
在Android中,Deno可以作为一个库引入,帮助开发者更方便地处理SQLite操作。Deno提供了更简洁的API和异步处理能力,使得与数据库的交互更加直观。例如,你可以使用Deno的SQLite库(如`deno-sqlite`)编写如下的代码...
SQLite是一个轻量级的、嵌入式的关系型数据库,适用于客户端存储数据。本文将深入探讨如何使用JavaScript封装HTML5操作SQLite数据库的类,并提供具体使用技巧。 首先,我们需要了解Web SQL API的基本用法。`open...
在Python的Web开发领域,Flask是一个轻量级的Web应用框架,而sqlite3则是Python标准库中的一个模块,用于处理嵌入式SQL数据库。这个名为“Python-使用Flask和sqlite3编写的项目目录应用程序”的项目,显然是利用这...
ASP.NET MVC4与SQLite是一个强大的组合,用于构建高效、轻量级的Web应用程序。ASP.NET MVC4是一个基于模型-视图-控制器(MVC)设计模式的开源框架,它允许开发者构建可维护、可测试的Web应用。SQLite则是一个便携式...
在"sqlite_Overprint"这个入门级的demo中,你可能会找到以上步骤的具体实现,包括数据库操作类的设计、WinForm控件与数据库的绑定以及Web服务接口的编写。这些示例代码可以帮助初学者快速理解如何在C#环境中有效利用...
SQLiteStudio是一款功能强大的SQLite数据库管理工具,它提供了一个直观的用户界面,使得数据库操作变得简单易行。这个压缩包文件包含了一系列与SQLiteStudio运行相关的组件和库文件,这些文件对于理解SQLite数据库...
这是一个处理 JSON(JavaScript Object Notation)数据的库。JSON 是一种轻量级的数据交换格式,常用于 Web 服务和客户端之间的数据传输。Unity 中,当你需要序列化和反序列化对象为 JSON 格式,或者解析从服务器...
数据库操作类: 支持 SQLServer mysql sqlite Sybase Oracle等DB 数据库操作类 包括执行SQL或者存储过程,返回DataSet、DataTable等功能 完全支持存储过程和参数调用 javascriptClassLibrary 包括一些JavaScript 类...
5. **错误处理**:由于SQLite操作可能因各种原因失败(如权限问题、数据库文件损坏等),确保在代码中添加适当的错误处理机制,以便在出现问题时能正确处理。 总的来说,这个"unity SQLite 所需类库Plugins资源...
3. PDO(PHP Data Objects)扩展:PDO是PHP的一个扩展,提供了统一的接口来访问各种数据库。在PHP中使用SQLite通常会通过PDO_SQLite驱动,它允许执行SQL语句、处理结果集、事务管理和错误处理。 4. MVC(Model-View...
SQLiteStudio是一款功能强大的SQLite数据库管理工具,它支持在多种操作系统上运行,包括Windows、Linux和macOS。在Android开发中,SQLite通常是应用内置数据库的选择,因为它轻量级且易于使用。通过SQLiteStudio,...