html5-localStorage本地存储和SQLLite本地数据库
2016-05-10 16:41
507 查看
localstorage和cookie
cookie缺点:① cookie大小限制在4k左右,不适合存业务数据
② cookie每次随HTTP事务一起发送,浪费带宽
localstorage优势:
① localstorage大小限制在500万字符左右,各个浏览器不一致
② localstorage在隐私模式下不可读取
③ localstorage本质是在读写文件,数据多的话会比较卡(firefox会一次性将数据导入内存,想想就觉得吓人啊)
④ localstorage不能被爬虫爬取,不要用它完全取代URL传参
localstorage的使用
判断浏览器的支持:function supports_html5_storage() { try { return 'localStorage' in window && window['localStorage'] !== null; } catch (e) { return false; } } 或使用开源的用来侦测用户浏览器对HTML5支持度的工具(例如Modernizr) if (Modernizr.localstorage) { // window.localStorage is available! } else { // 浏览器不支持HTML5 storage :( // 可以考虑使用dojox.storage 或其他方法 }
使用例子
localStorage.a = 3;//设置a为"3" localStorage["a"] = "sfsf";//设置a为"sfsf",覆盖上面的值 localStorage.setItem("b","isaac");//设置b为"isaac" var a1 = localStorage["a"];//获取a的值 var a2 = localStorage.a;//获取a的值 var b = localStorage.getItem("b");//获取b的值 localStorage.removeItem("c");//清除c的值 if (localStorage.pagecount) { localStorage.pagecount=Number(localStorage.pagecount) +1; } else { localStorage.pagecount=1; } document.write("Visits "+ localStorage.pagecount + " time(s)."); </script>
SQLLite本地数据库
本地数据库支持比较少,不够规范,建议少用本地数据库是H5之后出现的SQLLite数据库,可以通过SQL语言来访问文件型SQL数据库
使用数据库的步骤:
创建访问数据库
使用事务处理
创建访问数据库对象
博客出处
var db= openDatabase(‘mydb’,’1.0’,’TestDB’,2*1024*1024)
第一个参数:数据库名
第二个参数:版本号
第三个参数:数据库描述
第四个参数:数据库大小
该方法返回创建后的数据库访问对象,如果该数据库不存在,则创建数据库
用executeSql执行查询
transaction.executeSql(sqlquery,[],dataHandler,errorHandler);
第一个参数:查询语句
第二个参数:查询语句中的?
eg: transaction.executeSql(“UPDATE people set age=? which name=?”,[age,name])
第三个参数:执行成功时调用的回调函数
function dataHandler(transaction,result){//回调函数内容}
第四个参数:执行失败时调用的回调函数
function errorHandler(transaction,erromsg){//alert(“执行出错!”)}
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Sqlite</title> </head> <body onload="init()"> <!-- 创建数据库对象、使用事务进行数据库操作 --> 姓名:<input type="text" id="name"/> 电话:<input type="text" id="tel" /> <input type="button" value="保存" onclick="saveData()" /> <hr/> <input type="button" onclick="showAllData()" value="显示全部"> <input type="button" onclick="delAllData()" value="清空全部"> <hr/> <table id="datatable" border="1"> </table> <p id="'msg"></p> </body> <script type="text/javascript"> var datatable = null; var db = openDatabase('myTel','1.0','test db',1024*100);//数据库名 版本 数据库描述 大小 function init(){//初始化工作 datatable = document.getElementById('datatable'); showAllData(); } function removeAllData(){//移除页面上展示的数据 for(var i = datatable.childNodes.length-1;i>=0;i--){ datatable.removeChild(datatable.childNodes[i]); } var tr = document.createElement('tr'); var th1 = document.createElement('th'); var th2 = document.createElement('th'); th1.innerHTML = '姓名'; th2.innerHTML = '电话'; tr.appendChild(th1); tr.appendChild(th2); datatable.appendChild(tr); } function showData(row){//显示数据 var tr = document.createElement('tr'); var td1 = document.createElement('td'); td1.innerHTML = row.name; var td2 = document.createElement('td'); td2.innerHTML = row.tel; tr.appendChild(td1); tr.appendChild(td2); datatable.appendChild(tr); } function showAllData(){//显示所有数据 db.transaction(function (tx){ tx.executeSql('create table if not exists TelData(name TEXT,tel TEXT)',[],function(tx,res){ },function(tx,err){ alert(err.message) }); tx.executeSql('select * from TelData',[],function(tx,result){ removeAllData(); for(var i = 0 ;i<result.rows.length;i++){ showData(result.rows.item(i)); } }) }) } function saveData(){//保存数据 var name = document.getElementById('name').value; var tel = document.getElementById('tel').value; addData(name,tel); showAllData(); } function addData(name,tel){//添加数据 db.transaction(function(tx){ tx.executeSql('insert into TelData values(?,?)',[name,tel],function(tx,rs){ alert('yes'); }, function (tx,err){ alert(err.source +'===='+err.message); }) }) } function delAllData(){//删除所有数据 db.transaction(function(tx){ tx.executeSql('delete from TelData',[],function(tx,res){ alert('删除成功~'); },function (tx,err){ alert('删除失败'+err.message); }) }) showAllData(); } </script> </html>
参考
/article/11841442.html
/article/4682317.html
/article/1421392.html
http://html5doctor.com/introducing-web-sql-databases/
https://dev.w3.org/html5/webdatabase/
/article/2269164.html
相关文章推荐
- mysql 多表查询
- Oracle 树操作(select…start with…connect by…prior)
- 关于oracle with as用法
- oracle 控制文件多路复用
- MySQL 性能优化的最佳20多条经验分享
- mysql 自连接 公交换乘
- mysql 基本语句范例
- sql server 2008R2中的事务语句控制
- HeidiSQL无法连接Myql
- sqlserver2000 在查询时产生序号列的办法
- Mysql操作日志
- MySql 里的IFNULL、NULLIF和ISNULL用法区别
- 修改oracle数据库监听端口号
- 常用SQL函数
- 优化SQL查询:如何写出高性能SQL语句
- 解决mysql不是内部或外部命令 环境变量
- 网易视频云技术分享:一个SparkSQL的作业的一生
- MYSQL获取自增主键【4种方法】
- oracle connect by用法
- 关于mysql中root权限丢失的问题