HTML5 - 数据库

  • 时间:
  • 来源:互联网
  • 文章标签:

indexedDB

  1. 创建数据库

    indexedDB.open(‘name’,版本号)就可以找到这个创建的数据库

  2. 创建表(更新数据库版本号会涉及)
    db.result.createObjectStore(‘name’)----db 创建的数据库名

    name.onsuccess=fn 数据库创建或打开成功执行
    name.onerror=fn 打开失败 (版本号不能降低)执行
    name.onupgradeneeded=fn 版本升级时触发的函数

name.result.createObjectStore 创建一个表

设置主键的两种方式
自动递增的 - createObjectStore 表里面递增

{autoIncrement: true}

数据中字段作为主键

{keyPath:数据中的字段}

示例

var request=indexedDB.open('ssDb',4)
 request.onupgradeneeded=function () {
        var db=request.result;
        db.createObjectStore("text1",{autoIncrement: true});
    }
    var json = {
        name:'lss',
        age:18
    }
    setTimeout(function () {
        var db = request.result;
        var transaction = db.transaction('text1','readwrite');
        var store =transaction.objectStore('text1');
        store.add(json);
    },200)

模式两种

readwrite 读写模式
readonly 只能读不能写

增:IDBObjectStore.add
add 添加 readonly 是报错的
获取:IDBObjectStore.get
get 里面放入key值就可以的
获取所有数据:IDBObjectStore.getAll
getAll 可以获取所有的表中的数据 result 是以数组的形式表现

//示例
 var requestNode2 = store.getAll();
        requestNode2.onsuccess=function(){
            for (var i=0;i<requestNode2.result.length;i++){
                console.log(requestNode2.result[i]);
            }
        }

put 继续添加数据
delete 删除某一条数据 参数就是key值
clear 删除所有的数据

onsuccess 如果指令成功了执行的回调函数
result 可以看到相关的数据

索引

store.createIndex(表名称,数据key值,{unique:true});

unique唯一性,如果又多个同样的情况下,就不写入了

//检索
var index = store.index(表的名称)get(key值的名称).onsuccess = function(e){
	e.target.result 找到的数据的内容
}

游标

IDBKeyRange.only//参数一是范围

var requestNode = store.openCursor(IDBKeyRange.only(200));
requestNode.onsuccess = function(){
	console.log(requestNode.result.value)
	//最后获取的值
};

upperBound // 小于等于之前的 true 不包含自己的 false 包含自己的

//示例
var requestNode =store.openCursor(IDBKeyRange.upperBound(200,true));
requestNode.onsuccess = function(){
var cursor = requestNode.result;
	if(cursor ){
		console.log(cursor.value)
		//最后获取的值
		cursor.continue();
	}
};

lowerBound // 大于等于之前的 true 不包含自己的 false 包含自己的

//示例
var requestNode =store.openCursor(IDBKeyRange.lowerBound(200,true));
requestNode.onsuccess = function(){
var cursor = requestNode.result;
	if(cursor ){
		console.log(cursor.value)
		//最后获取的值
		cursor.continue();
	}
};

bound //多参数
参数1 大于等于的
参数2 小于等于的
如果有参数 3 和 4 就是true 和 false
true 不包含自己的 false 包含自己的
参数3 对应着参数1
参数4 对应着参数2

结合使用

var index = store.index('test3');
var requestNode = index.openCursor(IDBKeyRange.upperBound(31));

update()更新数据
delete()删除数据

//示例
<script>
    var request = indexedDB.open('ssDb', 7)
    request.onsuccess = function () {
        console.log('创建数据库成功');
    }
    request.onupgradeneeded = function () {
        var db = request.result;
        var store=db.createObjectStore("text1", {autoIncrement: true});
        store.createIndex('text1','name',{unique:true})
    }
    var json = [{
        name: 'lss',
        age: 18
         },
        {
            name: 'ltt',
            age: 19
        }, {
            name: 'lyy',
            age: 12
        }]

    setTimeout(function () {
        var db = request.result;
        var transaction = db.transaction('text1', 'readwrite');
        var store = transaction.objectStore('text1');
        // for (var i=0;i<json.length;i++){
        //     store.add(json[i])
        // }
        var index = store.index('text1');
        var requestNode = index.openCursor(IDBKeyRange.upperBound('lyy'));
        requestNode.onsuccess=function () {
            var cursor=requestNode.result;
            if (cursor){
                if (cursor.value.name=='lyy'){
                      // cursor.update({
                      //     name: 'lyy',
                      //     age: 13
                      // })
                    cursor.delete().onsuccess=function () {
                        console.log('删除成功')
                    }
                    }
                cursor.continue()
            }
        }
    }, 200)
</script>

本文链接http://www.taodudu.cc/news/show-83085.html