zoukankan      html  css  js  c++  java
  • 本地存储小案例

    <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();
    }
  • 相关阅读:
    1058 A+B in Hogwarts (20)
    1046 Shortest Distance (20)
    1061 Dating (20)
    1041 Be Unique (20)
    1015 Reversible Primes (20)(20 分)
    pat 1027 Colors in Mars (20)
    PAT 1008 Elevator (20)
    操作系统 死锁
    Ajax的get方式传值 避免& 与= 号
    让IE浏览器支持CSS3表现
  • 原文地址:https://www.cnblogs.com/len0031/p/4827142.html
Copyright © 2011-2022 走看看