Web存储

来源:互联网 发布:安卓一键锁屏推荐 知乎 编辑:程序博客网 时间:2024/06/05 08:43
HTML5中,开发者有两种选择:Web Storage和Web SQL Database

Web Storage:

web存储机制是通过字符串形式的key/value对来安全的存储和使用数据的方法。

Web存储与HTTPCookie的区别:

1)存储的容量:Web存储量大,更安全,更容易使用;对于Cookie的存储量是有限制的。对于IE浏览器,Cookie至多存储4KB信息,Web存储可达10MB

2)存储的持久性:Web存储通过浏览器来永久存储合理大小的数据,Cookie没有为存储永久性的数据提供支持。

Web的两种客户端存储类型:

    localStorage:本地存储,没有时间限制的数据存储,浏览器关闭不会丢失;

    sessionStorage:会话存储,针对一个会话期的数据存储,浏览器关闭丢失。

Firefox没有支持localStorage,但它提供了一个globalStorage用于指定域创建本地存储区域。

兼容实现:

    varstrDomain = “host.yourDomain”(127.0.0.1)

    varoStorage = window.locaStorage ? Window.locaStorage :window.globalSotrage[strDomain] ;

Storage接口:

    oStorage.length:获取key/value对数量;

    oStorage.key(index ):通过指定索引获取key,超过长度抛异常;

    oStorage.getItem(key):获取建对应值;(oStorage.key

    oStorage.clear():清除所以key/value对;

    oStorage.removeItem(key):删除指定键值对;

    oStorage.setItem(key,value):添加或者更新键值;(oStorage.key=value

Storage事件:

    window.onstorage捕获事件。

    Storage.setItemStorage.removeItemStorage.clear会触发该事件;

    key:表示被更改的键;

    oldValue:表示被更改的旧值;

    newValue:表示更改后的新值;

    url:表示更改发生的网址;

    storageArea:表示发生更改的Storage对象。

Eg

    window.onstorage=function(even){

        alert(even.key+ '' +even.oldValue + '改为'+ even.newValue) ;

    }


Web SQL Database:

简单而且强大的JavaScript数据库API,使得可以在一个本地SQLite数据库中持久保持数据。

使用WebSQL Database基本步骤:

1)建立连接:

vardb =window.openDatabase('name','1.0','title',2.*1024*1024,[callBack])

创建了一个数据库或建立与存在数据库对象的连接db,数据库名称name、版本号1.0、描述title、大小2M

if(db)可以判断数据库是否可以连接数据库。

2)执行SQL操作:

db.transaction(function(tx){})具有单一参数,参数是一个负责将数据库SQL操作限制在一个事务范围内的函数;(也可以定义在外面:function  callback(tx){}  db.transaction(callback))

tx为事务对象,有executeSql()方法执行SQL语句:

tx.executeSql(sql,data, successCallBack, errorCallBack) ;

3个参数是可选的,sql查询的字符串、data数组,替换sql中?占位符、successCallBack成功执行的回调函数、errorCallBack操作失败的回调函数。

3)对结果进行处理:

SQL操作成功有一个回调函数,该函数有两个参数(执行他的对象,查询结果)

functionqueryResult(tx, result){

varrowList = result.rows ; //获取记录行

varrow = rowList.item(index) ; //获取记录行

for(var j in row)

j+ ' = ' + row[j]; //获取记录行列名和值

}

SQL操作失败回调函数queryError(tx,err); //err错误对象

数据库操作:

创建数据库:openDatabase(name,version, displayName, estimatedSize,createationCallBack) //数据库名,版本号,描述,预估大小,数据库没有创建回调的异常处理函数

执行数据库事务:Database.transaction(callBack,[errorCallBack], [successCallBack]) //事务操作执行的回调函数,操作失败的回调函数,执行成功的回调函数

数据库版本管理:Database.changeVersion(oldVersion,newVersion, [callBack, [errorCallBack,[successCallBack]]]) //当前版本号,新版本号,执行回调函数,失败回调函数,成功回调函数

执行SQL语句:oSQLTransaction.executeSql(sql,[args, callback, errorCallBack]) 执行SQL语句,占位符数组,回调函数,失败回调函数

数据库操作结果处理:

执行executeSql()方法返回结果,作为executeSql的参数返回,结构为SQLResultSet对象,由SQLResultSet接口实现:

interfaceSQLResultSet {

readonlyattribute long insertId ; //记录行ID,如果多行,返回最后一行ID

readonlyattribute long rowsAffected; //SQL改变行数

readonlyattribute SQLResultSetRowList rows;//所有记录行结果

}

interfaceSQLResultSetRowList {

readonlyattribute unsigned long length; //行总数

getterany item(in unsigned long index); //获取指定行

}


原创粉丝点击