Html5——indexedDB数据库学习记录5之【利用索引获取数据】

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd" >
< html >

< head >
     < meta http-equiv= "Content-Type" content= "text/html; charset=utf-8" >
     < title >利用索引获取数据 </ title >
< script >
var myDB={
name: "helloindexDB",
version: 1,
db: null
}

function openDB( name, version){
var version = version || 1;
var request= widow. 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;
//如果没有 student 表
if(! db. objectStoreNames. contains( "students"))
{
//创建student表,并设置id为key
var story= db. createObjectStore( "students",{ keyPath: "id"});
//创建字段
story. createIndex( "nameIndex", "name",{ unique: true} );
story. createIndex( "ageIndex", "age",{ unique: false});

}
}
}
var students=
[
{
id: 101
name: "aa",
age: 10
},
{
id: 102
name: "bb",
age: 11
},
{
id: 103
name: "cc",
age: 12
}
]

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( student. name+ "--"+ student. age+ "--"+ student. id);

}

}
//执行 getDataByIndexName
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");
index. get( 11). onsuccess( function( e){
var student= e. target. result;
console. log( "姓名:"+ student. name+ "--年龄:"+ student. age+ "--id:"+ student. id);
})


}

//执行 getDataByIndexAge
setTimeout( function(){
getDataByIndexAge( myDB. db, "students");
}, 1000)

{#
综上所述:通过name来获取的数据是可以获得相同name的数据,但是age不行。因为name是唯一的,
age不是唯一的 ,
所以 要用 “游标” 来解决
#}


</ script >
    
</ head >

< body >


</ body >

</ html >

猜你喜欢

转载自blog.csdn.net/superstatus/article/details/80560696
今日推荐