web 离线存储
来源:互联网 发布:新红楼梦 知乎 编辑:程序博客网 时间:2024/05/18 03:17
应用缓存
console.log(window.applicationCache)// //如果让你更新应用的缓存文件// //已经缓存的文件下一次有网的情况下 加载文件还是缓存的内容// //解决思路更新应用缓存的配置文件// //window.applicationCache onobsolebe// window.applicationCache.onobsolete=function () {////// this.swapCache();// console.log("缓存文件失效");// window.location.reload();
function open() { var database=null; var request = window.indexedDB.open("hanjixin",3); request.onsuccess=function () { database=this.result; console.log("打开成功"); console.log(this.result); // add(); deletea(); } request.onupgradeneeded=function () { var db=this.result; var tablename="han"; db.deleteObjectStore("han"); console.log("创建成功"); if(!db.objectStoreNames.contains(tablename)){ var objectStore=db.createObjectStore(tablename,{keyPath:"date"}); objectStore.createIndex("haha","haha"); objectStore.createIndex("date","date"); objectStore.createIndex("ddsad","ddsad"); } } function add() { console.log(database); // var transaction = database.transaction(["hanjixin"], "readwrite") var transaction = database.transaction("han","readwrite"); var objectStore = transaction.objectStore("han"); objectStore.add({haha:"你愁啥",hehe:"瞅你咋地",date:new Date().getTime()}) }
open();
WebSQL
webSQL
是一个操作数据库的对象 里面封装了操作数据库的方法
是通过sql语句操作数据库的(创建数据库、建表、增删改查)
Sql语句?是一个可以操作数据库的字符串类似正则的规则 他不会自己执行,需要各个平台单独操作数据库的函数执行 这个sql语句 才能让sql执行
在webSQL里面 有执行sql语句的方法 就会去执行sql里面描述的功能
webSQL 跟sql语句 是完全独立的两个东西
Sql语句 只要是sqlite类型的数据库 都可以使用 有自己独立的语法
webSQL是前端独有的一个API
特点:
不区分大小写
语句结束之后 分号也是可选的
CREATE 创建TABLE 表INSERT 添加UPDATE 更新SELECT 选择查找DELETE 删除
Sql建表的语句
CREATE TABLE 表的名字 (字段);
添加数据
INSERT INTO 表的名字 (字段) VALUES(值);
删除数据
DELETE FROM 表的名字 WHERE 字段=值;
修改数据
UPDATE 表的名字 SET 字段=值;
查找数据
SELECT *FROM 表的名字;
SELECT *FROM 表的名字WHERE 字段=值;
webSQL:有执行sql的方法
openDatabase:打开数据库的方法
Transaction:获取事务的方法
executeSql:执行sql语句的方法
打开数据库
openDatabase(parms);
参数:
Name 数据库的名字 必传
Version 数据库的版本号 必传
displayName 数据库的名字 必传
estimatedSize 数据库的大小 必传
creationCallback 数据库创建完成的回调 可选
db = openDatabase("noteDB","1.0","noteDB",1024*1024*10,function (result) { console.log(result); //只有创建数据库成功 才会调用这个回调 db = result;});
通过事务对象 操作sql语句
通过数据库的对象 调用transaction函数会得到一个事务对象
可以通过事务对象 执行sql语句的函数
//callback,errorCallback,successCallbackdb.transaction(function (ts) { console.log(ts); //通过得到的事务对象 调用执行sql的方法 ts.executeSql("sql语句");});
执行SQL语句的函数
executeSql()
参数:
sqlStatement:sql语句 必传
Arguments 实参的数组(sql的值) 可选
Callback 执行完成时候的回调 可选
errorCallback 出现错误时候的回调 可选
db.transaction(function (ts) { console.log(ts); //通过得到的事务对象 调用执行sql的方法 //sqlStatement,arguments,callback,errorCallback ts.executeSql("CREATE TABLE user (id,username,age);");});
db.transaction(function (ts) { console.log(ts); //通过得到的事务对象 调用执行sql的方法 //sqlStatement,arguments,callback,errorCallback ts.executeSql(sql,args,function (result) { console.log(result); },function (error) { console.log(error); });});
添加
oprationSQL("INSERT INTO user (id,username,age) VALUES (6,'小ming',23);");
删除
oprationSQL("DELETE FROM user WHERE id=0",[],function () { searchAll();});
修改
oprationSQL("UPDATE user SET username='"+username+"' WHERE username='奥特曼';",[],function () { searchAll();});
查询
oprationSQL("SELECT * FROM user;",[],function (result) { var content = ""; for (var i=0;i<result.rows.length;i++){ content+="<p>"+result.rows[i].username+"</p>" } document.body.innerHTML = content;});
function Opendatabase() {}Opendatabase.open = function (config) { Opendatabase.CONFIG = config; Opendatabase.CONFIG.db=openDatabase(Opendatabase.CONFIG.name, Opendatabase.CONFIG.version,Opendatabase.CONFIG.name,Opendatabase.CONFIG.size*1024*1024);};// Opendatabase.open()Opendatabase.oprationSQL=function (sql,agr,callback) { Opendatabase.CONFIG.db.transaction(function (result) { result.executeSql(sql,agr,function () { console.log(arguments); callback(arguments[1].rows); })})}Opendatabase.createTable=function (tablename,tablevalue) { Opendatabase.CONFIG.tablename=tablename; Opendatabase.CONFIG.tablevalue=tablevalue; Opendatabase.oprationSQL('CREATE TABLE '+tablename+' ('+tablevalue.toString()+')',[],function (result) { console.log(result); })}Opendatabase.addData=function (agr) { Opendatabase.oprationSQL('INSERT INTO '+Opendatabase.CONFIG.tablename+' ('+Opendatabase.CONFIG.tablevalue.toString()+')'+' VALUES ('+agr.toString()+')',[],function (re) { console.log(re); });};Opendatabase.deletedata=function (info) { //传入删除的键值 var info=info||{}; // DELETE FROM user WHERE id=0 Opendatabase.oprationSQL('DELETE FROM '+Opendatabase.CONFIG.tablename+' WHERE '+info.key+' = "'+info.value+'"',[],function (re) { console.log(re); })};Opendatabase.updata=function (info) { //传入修改的对象的 键 与要替换的内容 var info=info||{}; console.log('UPDATE '+Opendatabase.CONFIG.tablename+' SET '+info.key+' = '+info.value+' WHERE '+info.key+' = '+info.oldvalue); //UPDATE user SET username='"+username+"' WHERE username='奥特曼' Opendatabase.oprationSQL('UPDATE '+Opendatabase.CONFIG.tablename+' SET '+info.key+' = "'+info.value+'" WHERE '+info.key+' = "'+info.oldvalue+'"',[],function (re) { console.log(re); })};Opendatabase.find=function (Tablename,callback) { //查找 console.log('SELECT * FROM '+Tablename); Opendatabase.oprationSQL('SELECT * FROM '+Tablename,[],function (re) { console.log(re); callback(re); })}
- web页面离线存储
- localForage Web 离线存储
- web离线存储
- web 离线存储
- HTML5 存储 & 离线web应用
- web离线存储之manifest
- HTML5-离线存储,Web Worker
- HTML5 离线存储之Web SQL
- 使用HTML5 Web存储实现离线工作
- HTML5 Web存储实现离线工作
- 离线存储(Offline Web Applications)浅析
- Web应用中的离线数据存储
- js-实现 Web 离线存储localForage
- 应用程序存储和离线Web应用
- 离线存储
- 【js学习笔记-106】----应用程序存储和离线Web应用
- localForage——轻松实现 Web 离线存储
- Html5 Web的5中离线存储方式之localStorage
- 自动控制原理01
- Nginx文档-初学者指南
- 一千行MySql 学习笔记 66哒
- slf4j的包使用说明
- Qt学习笔记之窗体基类说明
- web 离线存储
- 机密文件
- [Android6.0][RK3399] PCIe 转 SATA 调试步骤
- CodeForces-832B Petya and Exam
- ASSERT(0)的作用
- 类与对象
- 算法竞赛入门经典 UVa 514 Rails
- nginx rewrite(301)重定向之后无法正常请求的解决方案
- PX4源码分析7_添加mavlink自定义消息