本地存储小案例

<script>
        //创建indexedDB对象
        window.indexedDB = window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB;
        window.IDBTransaction = window.IDBTransaction || window.webkitIDBTransaction || window.msIDBTransaction;
        window.IDBKeyRange = window.IDBKeyRange || window.webkitIDBKeyRange || window.msIDBKeyRange;
        window.IDBCursor = window.IDBCursor || window.webkitIDBCursor || window.msIDBCursor;

        //创建数据库连接
        function connectDatabase() {
            var dbName = "indexDBtest";
            var dbVersion = 1;
            var idb;
            var dbConnect = indexedDB.open(dbName,dbVersion);
            dbConnect.onsuccess = function (e) {
                idb = e.target.result;
                alert("数据库连接成功");
            }
            dbConnect.onerror = function () {
                alert("连接失败");
            }
        }

        //更新数据库版本
        function VersionUpdate() {
            var dbName = "indexDBtest";
            var dbVersion = 2;
            var idb;
            var dbConnect = indexedDB.open(dbName, dbVersion);
            dbConnect.onsuccess = function (e) {
                idb = e.target.result;
                alert("数据库连接成功");
            }
            dbConnect.onerror = function () {
                alert("数据库连接失败");
            }
            dbConnect.onupgradeneeded = function (e) {
                idb = e.target.result;
                var tx = e.target.transaction;
                var oldVersion = e.oldVersion;
                var newVersion = e.newVersion;
                alert("数据库更新成功" + oldVersion + "---" + newVersion);
            }
        }

        //创建仓库
        function CreateObjectStore() {
            var dbName = "indexDBtest";
            var dbVersion = 3;
            var idb;
            var dbConnect = indexedDB.open(dbName,dbVersion);
            dbConnect.onsuccess = function (e) {
                idb = e.target.result;
                alert("数据库连接成功");
            }
            dbConnect.onerror = function () {
                alert("数据库连接失败");
            }
            dbConnect.onupgradeneeded = function (e) {
                idb = e.target.result;
                var name = "user";
                var optionalParameters = {
                    keyPath :"userid",
                    autoIncrement:false
                };
                var store = idb.createObjectStore(name,optionalParameters);
                alert("对象仓库创建成功");
            }
        }
    </script>

 <script>
        //索引及游标的使用
        var myDB = {
            name: "helloindexDB",
            version: 1,
            db: null
        };

        var students = [{
            id: 101,
            name: "aa",
            age: 11
        }, {
            id: 102,
            name: "bb",
            age: 11
        }, {
            id: 103,
            name: "cc",
            age: 11
        }, {
            id: 104,
            name: "dd",
            age: 14
        }];

        function openDB(name, version) {
            var version = version || 1;
            var request = window.indexedDB.open(name, version);
            request.onerror = function (e) {

            }
            request.onsuccess = function (e) {
                myDB.db = e.target.result;
            }
            request.onupgradeneeded = function (e) {
                var db = e.target.result;
                if (!db.objectStoreNames.contains("students")) {
                    var store = db.createObjectStore("students", { keyPath: "id" });
                    store.createIndex("nameIndex", "name", { unique: true });
                    store.createIndex("ageIndex", "age", { unique: false });
                }
            }
        }

        function addData(db, storeName) {
            var transaction = db.transaction(storeName, "readwrite");
            var store = transaction.objectStore(storeName);
            for (var i = 0; i < students.length; i++) {
                store.add(students[i]);
            }
        }

        openDB(myDB.name, myDB.version);
        setTimeout(function () {
            addData(myDB.db, "students");
        }, 1000);

        //通过姓名索引获取数据
        function getDataByIndexName(db, storeName) {
            var transaction = db.transaction(storeName);
            var store = transaction.objectStore(storeName);
            var index = store.index("nameIndex");
            index.get("aa").onsuccess = function (e) {
                var student = e.target.result;
                //console.log("nameIndex:" + student.name + "--" + student.age + "--" + student.id);
            };
        }
        setTimeout(function () {
            getDataByIndexName(myDB.db, "students");
        }, 1000);

        //通过年龄索引获取数据
        function getDataByIndexAge(db, storeName) {
            var transaction = db.transaction(storeName);
            var store = transaction.objectStore(storeName);
            var index = store.index("ageIndex");
            //多个11,但只取出一个
            index.get(11).onsuccess = function (e) {
                var student = e.target.result;
                //console.log("ageIndex:" + student.name + "--" + student.age + "--" + student.id);
            };
        }
        setTimeout(function () {
            getDataByIndexAge(myDB.db, "students");
        }, 1000);

        //游标
        function fetchStoreByCursor(db, storeName) {
            var transaction = db.transaction(storeName);
            var store = transaction.objectStore(storeName);
            var request = store.openCursor();
            request.onsuccess = function (e) {
                var cursor = e.target.result;
                if (cursor) {
                    //console.log(cursor.key);
                    var currentStudent = cursor.value;
                    //console.log(currentStudent.name);
                    //游标下移,获取下一条数据
                    cursor.continue();
                }
            }
        }
        setTimeout(function () {
            fetchStoreByCursor(myDB.db, "students");
        }, 1000);

        //index与游标配合
        function getDataByCursor(db,storeName) {
            var transaction = db.transaction(storeName);
            var store = transaction.objectStore(storeName);
            var index = store.index("ageIndex");
            var request = index.openCursor(IDBKeyRange.only(11));
            request.onsuccess = function (e) {
                var cursor = e.target.result;
                if (cursor) {
                    var student = cursor.value;
                    //console.log(student.id);
                    cursor.continue();
                }
            };
        }
        setTimeout(function () {
            getDataByCursor(myDB.db,"students");
        }, 500);

        //根据游标范围获取数据
        //IDBKeyRange.only(value); 只获取指定数据
        //IDBKeyRange.lowerBound(value,isopen); 获取最小是value,第二个参数用来表示是否包含最小值本身(即value为5,是否包含5)
        //IDBKeyRange.upperBound(value,isopen);
        //IDBKeyRange.bound(value1,value2,isopen1,isopen2)
        function getDataByCursorRange(db,storeName) {
            var transaction = db.transaction(storeName);
            var store = transaction.objectStore(storeName);
            var index = store.index("nameIndex");
            var request = index.openCursor(IDBKeyRange.bound("b","z",false,true));
            request.onsuccess = function (e) {
                var cursor = e.target.result;
                if (cursor) {
                    var student = cursor.value;
                    console.log(student.id);
                    cursor.continue();
                }
            };
        }
        setTimeout(function () {
            getDataByCursorRange(myDB.db, "students");
        }, 500);
    </script>

以上是IndexedDB。

Web Storage:

function saveStorage(id) {
    var data = document.getElementById(id).value;
    var time = new Date().getTime();
    //保存数据
    localStorage.setItem(time, data);
    alert("数据已存储");
    loadStorage(‘msg‘);
}

function loadStorage(id) {
    var result = "<table border = ‘1‘>";
    for (var i = 0; i < localStorage.length; i++) {
        var key = localStorage.key(i);
        var value = localStorage.getItem(key);
        var date = new Date();
        date.setTime(key);
        result += "<tr><td>" + value + "</td><td>" + date + "</td></tr>";
    }
    result += "</table>";
    var target = document.getElementById(id);
    target.innerHTML = result;
}

function clearStorage(id) {
    localStorage.clear();
    alert("数据已经删除");
    loadStorage(‘msg‘);
}

Web SQL Database:

<body onload="init()">
    <table>
        <tr><td>姓名:</td><td><input type="text" id="name" /></td></tr>
        <tr><td>留言:</td><td><input type="text" id="memo" /></td></tr>
        <tr>
            <td></td>
            <td><input type="button" value="保存" onclick="saveData()"/></td>
        </tr>
    </table>
    <hr />
    <table id="datatable" border="1">
        <p id="msg"></p>
    </table>
</body>

var datatable = null;
var db = openDatabase("MyData", "", "My Database", 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");
    var th3 = document.createElement("th");
    th1.innerHTML = "姓名";
    th2.innerHTML = "留言";
    th3.innerHTML = "时间";
    tr.appendChild(th1);
    tr.appendChild(th2);
    tr.appendChild(th3);
    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.message;
    var td3 = document.createElement("td");
    var t = new Date();
    t.setTime(row.time);
    td3.innerHTML = t.toLocaleDateString() + " " + t.toLocaleTimeString();
    tr.appendChild(td1);
    tr.appendChild(td2);
    tr.appendChild(td3);
    datatable.appendChild(tr);
}

//显示所有数据
function showAllData() {
    db.transaction(function (tx) {
        tx.executeSql("CREATE TABLE IF NOT EXISTS MsgData(name TEXT,message TEXT, time INTEGER)", []);
        tx.executeSql("SELECT * FROM MsgData", [], function (tx, rs) {
            removeAllData();
            for (var i = 0; i < rs.rows.length; i++) {
                showData(rs.rows.item(i));
            }
        });
    });
}

//添加数据
function addData(name, message, time) {
    db.transaction(function (tx) {
        tx.executeSql("INSERT INTO MsgData VALUES(?,?,?)", [name, message, time], function () {
            alert("成功");
        }, function (tx, error) {
            alert(error.source + ":" + error.message);
        });
    });
}

//保存数据
function saveData() {
    var name = document.getElementById("name").value;
    var memo = document.getElementById("memo").value;
    var time = new Date().getTime();
    addData(name, memo, time);
    showAllData();
}
时间: 2024-11-05 18:45:55

本地存储小案例的相关文章

DUBBO+Zookeeper在Centos7中本地搭建及小案例

环境: 1.centos7 2.jdk-7u76-linux-x64.tar.gz 2.tomcat:apache-tomcat-7.0.59.tar.gz 3.zookeeper-3.4.6.tar.gz 4.dubbo-admin-2.5.3.war 具体的流程: 第一步:安装jdk,并且配置环境变量(*) xshell5命令: 1.解压jdk: tar xvf jdk-7u76-linux-x64.tar.gz 1 2.提取权限: chmod–R 777 /usr/local/java/j

Vue 商城的一些小demo(后台添加商品、前台购物车、本地存储的使用)

demo   商城后台,添加一种商品 <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title></title> <!-- 引入vue.js --> <script src="js/vue.js"></script> </head> <body> <div id=&

localstorge实现本地存储

这个是我个人生活中的一个小小的案例,由于我最近在找工作,投的简历多了,就很容易弄混淆,我就弄了这个个小东西. 最开始没有实现本地存储的功能的,只是当作一个闭包的案例,具体看这里,但是这样子,一刷新,就会消失不见了,所以我就加入了一个本地存储的功能

为VMware ESXi主机添加本地存储的过程及注意事项-之1

为VMware ESXi主机添加本地存储的过程及注意事项之1 在规划数据中心的时候,除了考虑当前的实际情况下,还要考虑将来二至三年的可能出现的问题.但有的时候,虽然已经做了多种考虑,但在信息化实施的过程中,仍然会碰到问题,这时就需要管理员根据实际情况进行处理. 例如,在规划虚拟化数据中心的时候,作为群集中的虚拟化主机,一般不配置本地硬盘,而是采用共享存储,以实现系统的高可用性.即时为服务器配置本地硬盘,一般也只是配置一个较小的磁盘,例如60-120GB的固态硬盘安装系统.相信这是大多数虚拟化数据

[js开源组件开发]localStorage-cache本地存储的缓存管理

localStorage-cache本地存储的缓存管理 距离上次的组件开发有近三个月的时间了,最近一直在做一些杂事,无法静下心来写写代码,也是在学习emberjs,在emberjs中有一个很重要的东西 -- localstorage_adapter,本地存储适配器,利用它可以很方便的把数据保存在本地的localStorage中,但我今天要讲的,并不是ember,也不是适配器,我是个比较念旧的人,所以我对cookie很情有独钟,当然,cookie也会有各种问题,于是我就来改造下localStora

Windows Server之浅谈SMB以及SMB小案例分享

SMB由来 服务器消息区块(英语:Server Message Block,缩写为SMB,服务器消息区块),又称网络文件共享系统(英语:Common Internet File System,缩写为CIFS),一种应用层网络传输协议,由微软开发,主要功能是使网络上的机器能够计算机文件.打印机.串行端口和通讯等资源.它也提供经认证的进程间通信机能.它主要用在装有Microsoft Windows的机器上,在这样的机器上被称为Microsoft Windows Network. SMB版本 OS W

HTML5移动开发之路(19)——HTML5 Local Storage(本地存储)

本文为 兄弟连IT教育 机构官方 HTML5培训 教程,主要介绍:HTML5移动开发之路(19)--HTML5 Local Storage(本地存储) 一.浏览器存储的发展历程 本地存储解决方案很多,比如Flash SharedObject.Google Gears.Cookie.DOM Storage.User Data.window.name.Silverlight.Open Database等. 借用网上的一张图来看下目前主流的本地存储方案: Cookie: 在web中得到广泛应用,但局限

Html5 web本地存储

Web Storage是HTML5引入的一个非常重要的功能,可以在客户端本地存储数据,类似HTML4的cookie,但可实现功能要比cookie强大的多,cookie大小被限制在4KB,Web Storage官方建议为每个网站5MB. Web Storage又分为两种: sessionStorage localStorage 从字面意思就可以很清楚的看出来,sessionStorage将数据保存在session中,浏览器关闭也就没了:而localStorage则一直将数据保存在客户端本地: 不管

HTML5本地存储

一.Storage介绍 1.sessionStorage session临时回话,从页面打开到页面关闭的时间段 窗口的临时存储,页面关闭,本地存储消失 2.localStorage 永久存储(可以手动删除数据) 二.Storage的特点 存储量限制 ( 5M ) 客户端完成,不会请求服务器处理 sessionStorage数据是不共享. localStorage共享 三.Storage API 基本方法使用 setItem(): 设置数据,key\value类型,类型都是字符串 可以用获取属性的