zoukankan      html  css  js  c++  java
  • indexedDB简单例子

    <!DOCTYPE html>
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <meta name="viewport" content="width=device-width, initial-scale=1" />
    <title>HTML5 - IndexedDB</title>
    <script type="text/javascript">
    var db;
    var request;
    var objectStore;
    function _create(dbName){
        request=indexedDB.open(dbName,1);
        
        request.onerror = function () {
               alert("打开数据库失败:"+event.target.message);
        }
        request.onsuccess = function (event) {
            alert("打开数据库成功!");
               db=event.target.result;
               var transaction = db.transaction(["info"], "readwrite");
               objectStore = transaction.objectStore("info");
        } 
        request.onupgradeneeded = function(event) {
               alert("版本变化!");
               db = event.target.result;
               objectStore = db.createObjectStore("info", {keyPath: "userId",autoIncrement: true});
         }
    }
       
    function _delete(dbName){
        try{
               request=indexedDB.deleteDatabase(dbName);
               request.onerror = function () {
                   alert("删除数据库失败:"+event.target.message);
            }
            request.onsuccess = function (event) {
                alert("删除数据库成功!");
            } 
        }catch(e){
           alert(e.getMessage);
        }
    }
     
    function _get (argument) {
        var p=document.getElementById("display");
        p.innerHTML="";//获取数据前先清理一下页面已显示的数据
        if(!db){
            alert("请打开数据先!");
            return false;
        }
        var store = db.transaction("info").objectStore("info");
        var keyRange = IDBKeyRange.lowerBound(0);//规定keyRange从0开始
        var cursorRequest = store.openCursor(keyRange);//按照keyRange的设置开启游标
     
        cursorRequest.onsuccess = function (e) {
     
            var result = e.target.result;
     
            if (!!result == false)
                return;
     
            _render(result.value);
            result.continue();//这边执行轮询读取
        };
     
        cursorRequest.onerror = function (e) {
            alert("数据检索失败!");
        };
     
    }
     
    function _render (e) {
        var p=document.getElementById("display");
        p.innerHTML+="姓名:"+e.name+" 年龄:"+e.age+" 性别:"+e.xb+"<br />";
    }
     
    function _add (argument) {
        var name=document.getElementById("name").value;
        var age=document.getElementById("age").value;
        var xb,flag=document.getElementById("nan").checked;
        if(flag)
            xb="";
        else
            xb="";
        var detail={
            name:name,
            age:age,
            xb:xb
        }
        if(!db){
            alert("请打开数据先!");
            return false;
        }
           var transaction = db.transaction(["info"], "readwrite");
        objectStore = transaction.objectStore("info");
        objectStore.add(detail);
        alert("添加成功!");
    }
    </script>
    </head>
    <body>
        <small>添加前请先打开数据库(如数据库不存在则执行创建过程)</small><br /><br />
        <button onClick="_create('user')">打开数据库</button>
           <button onClick="_delete('user')">删除数据库</button><br /><br />
        姓名:<input type="text" id="name"><br />
        年龄:<input type="number" id="age" min=1><br />
        性别:<br />
              男:<input type="radio" id="nan" name="xb" value="male" checked>
              女:<input type="radio" id="nv" name="xb" value="female"><br />
        
        <button onClick="_add()">添加数据</button>
        <button onClick="_get()">获取数据</button><br />
        <p id="display"></p>
        
    </body>
    </html>
  • 相关阅读:
    SQL Server 2008通过PassPhrase加密数据
    SQL Server 2008之Values
    Merge(在一条语句中使用Insert,Update,Delete) 对两个表进行同步数据
    Linux yum常用命令介绍
    SQL Server 2008之WaitFor
    Android之TelephonyManager类的方法详解
    TextView里的文 html
    adb
    Apk得到Java源代码
    【Android】调用系统应用常用uri & intent设置
  • 原文地址:https://www.cnblogs.com/henuyuxiang/p/14690789.html
Copyright © 2011-2022 走看看