Professional Documents
Culture Documents
23.7
23.8
23.2
IDBFactory
23.3
23.4
IDBDatabase
23.5
23.8.1
23.8.2
23.8.3
23.8.4
SUMMARY
23.5.1
23.5.2
23.5.3
23.6
23.6.1 IDBObjectStore
23.6.2
23.6.3 cursor
23.6.4
23.6.5
23-2
HTML5 ()
11.1
HTML5HTML5
PART 1
HTML5 ()
23-3
23
HTML5
Web Web Storage Indexed Database API
The Web Applications Working Group continues work on two other storagerelated specifications: Web Storage and Indexed Database API.
HTML5 ()
23.2IDBFactory
SQL API
23.2 IDBFactory
database Indexed Database API
object store
IDBFactory
HTML5 ()
23-3
23
interface IDBFactory {
IDBOpenDBRequest open (DOMString name,
[EnforceRange] optional unsigned long long version);
IDBOpenDBRequest deleteDatabase (DOMString name);
short cmp (any first, any second);
};
open() name
deleteDatabase name
cmp first second 1
-1 0
open() delete()
IDBRequest IDBOpenDBRequest
IDBRequest
interface IDBRequest : EventTarget {
readonly attribute any
result;
readonly attribute DOMError
error;
readonly attribute Object
source;
readonly attribute IDBTransaction transaction;
readonly attribute DOMString
readyState;
[TreatNonCallableAsNull]
attribute Function?
onsuccess;
[TreatNonCallableAsNull]
attribute Function?
onerror;
};
23-4
result
error
source
transaction
readyState
pending done
onsuccess
success
onerror
error
HTML5 ()
23.3
open
Indexed Database API
23.3
IDBFactory open()
IDBFactory
Webkit webkitIndexedDB Gecko
mozIndexedDB open()
KTMS
var request = webkitIndexedDB.open('KTMS');
Webkit Gecko
mozIndexedDB
indexedDB = window.indexedDB ||
window.mozIndexedDB ||
window.webkitIndexedDB ;
open()
var request = indexedDB.open('KTMS');
KTMS
open() IDBRequest
request onsueecss onerror
HTML5 ()
23-5
23
dbopen.html
<!DOCTYPE html>
<html>
<head>
<title> </title>
<script>
var db;
var request = webkitIndexedDB.open('KTMS');
request.onerror = function (event) {
alert(event.target.errorCode);
};
request.onsuccess = function (event) {
db = event.target.result;
alert(' [readyState' + this.readyState + ']');
};
</script>
</head>
<body >
</body>
</html>
db
IDBDatabase
23-6
HTML5 ()
23.4 IDBDatabase
23.4 IDBDatabase
IDBDatabase
interface IDBDatabase : EventTarget {
readonly attribute DOMString
name;
readonly attribute unsigned long long version;
readonly attribute DOMStringList
objectStoreNames;
IDBObjectStore createObjectStore (DOMString name,
optional IDBObjectStoreParameters optionalParameters);
void deleteObjectStore (DOMString name);
IDBTransaction transaction (any storeNames, optional DOMString mode);
Void close ();
[TreatNonCallableAsNull]
attribute Function?
onabort;
[TreatNonCallableAsNull]
attribute Function?
onerror;
[TreatNonCallableAsNull]
attribute Function?
onversionchange;
};
IDBDatabase
name
version
objectStoreNames
DOMStringList
createObjectStore
IDBObjectStore
deleteObjectStore
transaction
close
onabort
abort
onerror
error
onversionchange
versionchange
objectStoreNames DOMStringList
createObjectStore()
HTML5 ()
23-7
23
IDBObjectStore
deleteObjectStore()
createObjectStore() deleteObjectStore()
close()
void close();
closePending
true
closePending false
true
23.5
23.5.1
IDBDatabase version
version
long
23-8
HTML5 ()
23.5
open() n n KTMS
upgradeneeded n n
error
upgradeneeded
23-2
62
65
66
HTML5 ()
23-9
23
dbVersion-demo.html
<body>
<div id="messagev"></div>
<p>
<input type="text" id='version'
/>
<input type="text" id='dbname' value ="KTMS" />
<button onclick="click_handler()"> </button>
</p>
<div id="message"></div>
</body>
messagev
<input> id version dbname
KTMS
onload
window.onload = function () {
requestName = document.getElementById('dbname').value;
request = indexedDB.open(requestName);
request.onsuccess = function (event) {
db = event.target.result;
document.getElementById('messagev').innerHTML =
' ' + db.name + ' / ' + db.version;
db.close();
};
};
name
23-10
HTML5 ()
23.5
version
function click_handler() {
var version = parseInt(document.getElementById('version').value);
request = indexedDB.open(requestName, version);
request.onerror = function (event) {
document.getElementById('message').innerHTML =
' ' + event.target.errorCode;
};
request.onsuccess = function (event) {
db = event.target.result;
document.getElementById('message').innerHTML =
(' /' + db.version);
};
request.onupgradeneeded = function (event) {
alert(' ' + event.oldVersion + '/' + event.newVersion);
alert(' ' + event.target.result.version);
};
db.close();
}
open()
version
upgradeneeded
event oldVersion newVersion
error
success
upgradeneeded
23.5.2
IDBDatabase objectStoreNames
HTML5 ()
23-11
23
DOMStringList
23-3
KTMS
KTMS
objectStore-list.html
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
<script>
var reuestName = 'KTMS';
var version;
var indexedDB = window.indexedDB ||
window.mozIndexedDB ||
window.webkitIndexedDB;
function listObjectSore() {
var request = indexedDB.open(reuestName);
request.onsuccess = function (event) {
db = event.target.result;
var stores = db.objectStoreNames;
var length = db.objectStoreNames.length;
var storenames = '';
for (var i = 0; i < length; i++) {
()
23-12
HTML5 ()
23.5
KTMS db objectStoreNames
for <ul>
23.5.3
IDBDatabase
createObjectStore
IDBObjectStore createObjectStore (
DOMString name,
optional IDBObjectStoreParameters optionalParameters);
name optionalParameters
DOMException
InvalidStateError
versionchange
ConstraintError
InvalidAccessError
HTML5 ()
23-13
23
InvalidStateError createObjectStore()
upgradeneeded
ConstraintError name
InvalidAccessError
createObjectStore() IDBObjectStore
deleteObjectStore()
name
InvalidStateError
versionchange
NotFoundError
NotFoundError
InvalidStateError createObjectStore()
createObjectStore() deleteObjectStore()
23-14
HTML5 ()
23.5
23-4
23-3
objectStore-demo.html
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
<script>
var requestName = 'KTMS';
var version;
var indexedDB = window.indexedDB ||
window.mozIndexedDB ||
window.webkitIndexedDB;
function addOS() {
version++;
var db;
var request = indexedDB.open(requestName, version);
request.onupgradeneeded = function (event) {
try{
var osname = document.getElementById('osname').value;
db = event.target.result;
()
HTML5 ()
23-15
23
addOS()
createObjectStore() try-catch
click deleteOS()
deleteObjectStore() try-catch
23-16
HTML5 ()
23.6
listObjectSore()
23.6
IDBObjectStore
23.6.1 IDBObjectStore
Indexed Database Object Store
Table
record
IDBObjectStore
interface IDBObjectStore {
readonly attribute DOMString
name;
readonly attribute DOMString
keyPath;
readonly attribute DOMStringList indexNames;
readonly attribute IDBTransaction transaction;
readonly attribute boolean
autoIncremenent;;
IDBRequest put (any value, optional any key);
IDBRequest add (any value, optional any key);
IDBRequest delete (any key);
IDBRequest get (any key);
IDBRequest clear ();
IDBRequest openCursor (optional any? range,
optional DOMString direction);
IDBIndex
createIndex (DOMString name, any keyPath, optional
IDBIndexParameters optionalParameters);
IDBIndex
index (DOMString name);
void
deleteIndex (DOMString indexName);
IDBRequest count (optional any key);
};
name
HTML5 ()
23-17
23
null
keyPath key key path
indexNames
transaction
autoIncremenent
put()
value
add()
delete()
get()
clear()
createIndex()
index()
deleteIndex()
openCursor()
IDBCursorWithValue cursor
count()
key
IDBRequest
IDBObjectStore
23.6.2
createObjectStore()
IDBObjectStore
IDBTransaction
IDBDatabase transaction()
23-18
HTML5 ()
23.6
db objectStoreName
objectStoreName
objectStore()
Transaction()
IDBTransaction transaction (
any storeNames,
optional DOMString mode);
readonly
readwrite
versionchange
transaction()
InvalidStateError
NotFoundError
TypeError
mode
InvalidAccessError
CRUD
IDBTransaction
objectStore()
IDBObjectStore objectStore (in DOMString name)
name
name NotFoundError
objectStore() IDBObjectStore
HTML5 ()
23-19
23
add() delete()
23.6.3 cursor
Cursor IDBObjectStore
openCursor()
IDBRequest openCursor (
optional any? range,
optional DOMString direction)
success IDBCursorWithValue
cursor success
value
IDBCursor
key IDBCursor
interface IDBCursor {
readonly attribute Object
source;
readonly attribute DOMString direction;
readonly attribute any
key;
readonly attribute any
primaryKey;
IDBRequest update (any value);
void
advance ([EnforceRange] unsigned long count);
void
continue (optional any key);
IDBRequest delete ();
}
key continue()
23-20
HTML5 ()
23.6
openCursor()
IDBRequest
23-5
cursor
objectStore-data-list.html
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title></title>
<script>
var reuestName = 'KTMS';
var objectStoreName = 'OS1';
var db;
var indexedDB = window.indexedDB ||
window.mozIndexedDB ||
window.webkitIndexedDB;
function list() {
try {
var transaction = db.transaction([objectStoreName]);
var store = transaction.objectStore(objectStoreName);
var crequest = store.openCursor()
var message = '<ul>';
crequest.onsuccess = function (event) {
var cursor = event.target.result;
if (cursor) {
message += (
'<li>' + key/value" + '' +
cursor.key + "/" + cursor.value +
()
HTML5 ()
23-21
23
'</li>');
cursor.continue();
} else {
message += '</ul>'
}
document.getElementById('message').innerHTML =
message;
};
} catch (e) {
alert(e);
}
}
window.onload = function () {
var request = indexedDB.open(reuestName);
request.onsuccess = function (event) {
db = event.target.result;
list();
};
};
</script>
</head>
<body>
<div id="message" ></div>
</body>
</html>
23.6.4
IDBObjectStore add()
IDBRequest add (any value, optional any key);
value
23-22
HTML5 ()
23.6
TransactionInactiveError
ReadOnlyError
DataError
key
InvalidStateError
DataCloneError
try-catch
delete() add()
IDBRequest delete (in any key)
key
key TransactionInactiveError
ReadOnlyError add()
add() delete()
23-6
key/value
HTML5 ()
23-23
23
objectStore-data.html
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title></title>
<script>
var reuestName = 'KTMS';
var objectStoreName = 'OS1';
var db;
var indexedDB = window.indexedDB ||
window.mozIndexedDB ||
window.webkitIndexedDB;
function delete_click() {
try {
var transaction = db.transaction(
[objectStoreName], 'readwrite');
transaction.oncomplete = function (event) {
alert(' !');
};
transaction.onerror = function (event) {
alert(event);
};
var store = transaction.objectStore(objectStoreName);
var key = document.getElementById('key').value;
//
var request = store.delete(key);
request.onsuccess = function (event) {
list();
};
request.onerror = function (event) {
alert(event);
};
} catch (e) {
alert(e);
}
}
function add_click(){
try {
var transaction = db.transaction(
[objectStoreName], 'readwrite');
transaction.oncomplete = function (event) {
alert(' !');
};
transaction.onerror = function (event) {
alert(event);
};
//
var store = transaction.objectStore(objectStoreName);
var value = document.getElementById('value').value;
()
23-24
HTML5 ()
23.6
/>
add_click() add()
delete_click()
key
readwrite
HTML5 ()
23-25
23
createObjectStore() autoIncrement
true
OSAI {autoIncrement:
true }
23-7
bjectStore-data-auto.html
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title></title>
<script>
var reuestName = 'KTMS';
var objectStoreName = 'OSAI';
var db;
var indexedDB = window.indexedDB ||
window.mozIndexedDB ||
window.webkitIndexedDB;
function add_click(){
try {
()
23-26
HTML5 ()
23.6
var transaction =
db.transaction([objectStoreName],
'readwrite');
//
var store = transaction.objectStore(objectStoreName);
var value = document.getElementById('value').value;
var request = store.add(value);
request.onsuccess = function (event) {
list();
};
request.onerror = function (event) {
alert(event);
};
} catch (e) {
alert(e);
}
}
window.onload = function () {
var request = indexedDB.open(reuestName);
request.onsuccess = function (event) {
db = event.target.result;
list();
};
};
function list() {
//
}
</script>
</head>
<body>
<input type="text" id='value' />
<button onclick="add_click()"> </button>
<div id="message" ></div>
</body>
</html>
add()
OSAI
23.7
23.6.5
get()
HTML5 ()
23-27
23
key
DataError
23-8
key
objectStore-data-get.html
<!DOCTYPE html>
<html>
<head>
<title></title>
<script>
var reuestName = 'KTMS';
var objectStoreName = 'OS1';
var db;
var indexedDB = window.indexedDB ||
window.mozIndexedDB ||
window.webkitIndexedDB;
var request = indexedDB.open(reuestName);
request.onsuccess = function (event) {
db = event.target.result;
};
function search_click() {
try {
var transaction = db.transaction([objectStoreName]);
var store = transaction.objectStore(objectStoreName);
var key = document.getElementById('key').value;
var request = store.get(key);
request.onsuccess = function (event) {
var value = request.result;
document.getElementById('message').innerHTML =
'key/value' + key + '/' + value;
};
()
23-28
HTML5 ()
23.7
get() success
23.7
{
ProductID: 1000001",
ProductName: USB 3.0 ",
Category: " ",
UnitPrice: 1200
}
JSON
ProductID
ProductName
Category
UnitPrice
JSON JSON
HTML5 ()
23-29
23
JSON
ProductID
ProductID
var objectStore =
db.createObjectStore('products',{keypath:ProductID});
createObjectStore()
products
ProductID
JSON
{keypath:ProductID}
Products
23-9
JSON
JSON
23-30
HTML5 ()
23.7
objectStore-data-json-list.html
<!DOCTYPE html>
<html>
<head>
<title></title>
<script>
var reuestName = 'KTMS';
var objectStoreName = 'Products';
var db;
var indexedDB = window.indexedDB ||
window.mozIndexedDB ||
window.webkitIndexedDB;
function list() {
try {
var transaction = db.transaction([objectStoreName]);
var store = transaction.objectStore(objectStoreName);
var crequest = store.openCursor()
var message = '<ul>';
crequest.onsuccess = function (event) {
var cursor = event.target.result;
if (cursor) {
message += ('<li>' + id" + cursor.key +
"<br/> " + cursor.value.ProductName +
"<br/> " + cursor.value.UnitPrice +
"<br/> " + cursor.value.Category);
cursor.continue();
} else {
message += '</ul>'
}
document.getElementById('message').innerHTML = message;
};
} catch (e) {
alert(e);
}
}
window.onload = function () {
var request = indexedDB.open(reuestName);
request.onsuccess = function (event) {
db = event.target.result;
list();
};
};
</script>
</head>
<body>
<div id="message" ></div>
</body>
</html>
cursor
JSON
HTML5 ()
23-31
23
ProductID Products
23-10
objectStore-data-json.html
<!DOCTYPE html>
<html >
<head>
<title></title>
<style>
div {margin:10px;width:400px;text-align:left; }
</style>
<script>
var reuestName = 'KTMS';
var objectStoreName = 'Products';
var db;
var indexedDB = window.indexedDB ||
window.mozIndexedDB ||
()
23-32
HTML5 ()
23.7
window.webkitIndexedDB;
function add_click() {
try {
var transaction = db.transaction(
[objectStoreName], 'readwrite');
transaction.oncomplete = function (event) {
alert(' !');
};
transaction.onerror = function (event) {
alert(event);
};
//
var store = transaction.objectStore(objectStoreName);
var data =
{
ProductID: document.getElementById('ProductID').value,
ProductName: document.getElementById('ProductName').
value,
Category: document.getElementById('Category').value,
UnitPrice: parseInt(
document.getElementById('UnitPrice').value)
}
var request = store.add(data);
request.onsuccess = function (event) {
alert(' !');
};
request.onerror = function (event) {
alert(' '+event.message );
};
} catch (e) {
alert(e);
}
}
window.onload = function () {
var request = indexedDB.open(reuestName);
request.onsuccess = function (event) {
db = event.target.result;
};
};
</script>
</head>
<body>
<div>
<input type="text" id="ProductID" style="width:100px;"/><br/>
<input type="text" id="ProductName" style="width:260px;" /><br/>
<input type="text" id="Category" style="width:60px;" /><br/>
<input type="text" id="UnitPrice" style="width:50px;" /><br/>
</div>
<div><button onclick="add_click()"> </button></div>
</body>
</html>
HTML5 ()
23-33
23
add_Clilck() add()
JSON data
JSON
Indexed Database API
23.8
23.8.1
IDBIndex
interface IDBIndex {
readonly attribute DOMString
name;
readonly attribute IDBObjectStore objectStore;
readonly attribute DOMString
keyPath;
readonly attribute boolean
multiEntry;
readonly attribute boolean
unique;
IDBRequest openCursor (optional any? range,
optional DOMString direction);
IDBRequest openKeyCursor (optional any?range,
optional DOMString direction);
IDBRequest get (any key);
IDBRequest getKey (any key);
IDBRequest count (optional any key);
};
name
objectStore
()
23-34
HTML5 ()
23.8
keyPath
multiEntry
multiEntry
unique
unique
openCursor
cursor
openKeyCursor
cursor
get
getKey
count
23.8.2
IDBObjectStore indexNames
indexNames;
DOMStringList
23-11
HTML5 ()
23-35
23
KTMS
index-list.html
<!DOCTYPE html>
<html>
<head>
<meta/>
<title></title>
<script>
var requestName= 'KTMS';
var objectStoreName = 'Products93';
var version;
var db;
var indexedDB = window.indexedDB ||
window.mozIndexedDB ||
window.webkitIndexedDB;
window.onload = function () {
var request = indexedDB.open(requestName);
request.onsuccess = function (event) {
db = event.target.result;
version = db.version;
var transaction = db.transaction([objectStoreName]);
var store = transaction.objectStore(objectStoreName);
var indexes = store.indexNames
var msg = '<ul>';
var l = indexes.length;
if (l > 0) {
for (var i = 0; i < indexes.length; i++) {
msg +=
('<li>' + indexes[i] + '/' +
store.index(indexes[i]).keyPath + '</li>');
}
msg += '</ul>'
document.getElementById('message').innerHTML = msg;
} else {
console.log(' ! ');
}
db.close();
};
};
</script>
</head>
<body>
<div id="message" ></div>
</body>
</html>
success
indexNames
23-36
HTML5 ()
23.8
0 0
for
23.8.3
IDBObjectStore createIndex()
IDBIndex createIndex (
DOMString name,
any keyPath,
optional IDBIndexParameters optionalParameters);
name keyPath
optionalParameters IDBIndexParameters dictionary
dictionary IDBIndexParameters {
boolean unique = false;
boolean multiEntry = false;
};
createIndex()
InvalidStateError
ConstraintError
HTML5 ()
23-37
23
23-12
upgradeneeded
index-createOS.html
<!DOCTYPE html>
<html>
<head>
<title></title>
<script>
var requestName = 'KTMS';
var objectStoreName = 'OS';
var version;
var indexedDB = window.indexedDB ||
window.mozIndexedDB ||
window.webkitIndexedDB;
var db;
function addIDX() {
version++;
var request = indexedDB.open(requestName, version);
request.onupgradeneeded = function (event) {
try {
db = event.target.result;
var objectStore = db.createObjectStore(
objectStoreName + version.toString());
var name = document.getElementById('idxname').value;
var keyPath = document.getElementById('idxkeyPath').value;
objectStore.createIndex(name, keyPath);
alert(' !');
} catch (e) {
alert(e.toLocaleString());
} finally {
if (db) {
db.close();
console.log(' ');
}
()
23-38
HTML5 ()
23.8
}
}
}
window.onload = function () {
var request = indexedDB.open(requestName);
request.onsuccess = function (event) {
db = event.target.result;
version = db.version;
db.close();
}
};
</script>
</head>
<body>
<p>
<input type="text" id='idxname' style="width: 100px" />
<input type="text" id='idxkeyPath' style="width: 100px" />
<button onclick="addIDX()" > </button>
</p>
<div id="message"></div>
</body>
</html>
createIndex()
OS
indexName
indexName
InvalidStateError ConstraintError
HTML5 ()
23-39
23
23-13
index-deom.html
<!DOCTYPE html>
<html>
<head>
<title></title>
<script>
var requestName = 'KTMS';
var objectStoreName = 'Products';
var version;
var db;
var indexedDB = window.indexedDB ||
window.mozIndexedDB ||
window.webkitIndexedDB;
function list() {
//
}
window.onload = function () {
list();
};
function createIDX() {
version++;
var request = indexedDB.open(requestName, version);
request.onupgradeneeded = function (event) {
try {
()
23-40
HTML5 ()
23.8
db = event.target.result;
var transaction = event.target.transaction;
var store = transaction.objectStore(objectStoreName);
var name = document.getElementById('idxName').value;
var keyPath = document.getElementById('idxKeypath').
value;
store.createIndex(name, keyPath);
} catch (e) {
alert(e);
} finally {
if (db) {
db.close();
console.log(' ');
}
list();
}
}
}
function deleteIDX() {
version++;
var request = indexedDB.open(requestName, version);
request.onupgradeneeded = function (event) {
try {
db = event.target.result;
var transaction = event.target.transaction;
var store = transaction.objectStore(objectStoreName);
var name = document.getElementById('idxName').value;
store.deleteIndex(name);
} catch (e) {
alert(e.toLocaleString());
} finally {
if (db) {
db.close();
console.log(' ');
}
list();
}
}
}
</script>
</head>
<body>
<p>
<input type="text" id='idxName' style="width: 100px" />
<input type="text" id='idxKeypath' style="width: 100px" />
<button onclick="createIDX()" > </button>
<button onclick="deleteIDX()"> </button>
</p>
<div id="message" ></div>
</body>
</html>
HTML5 ()
23-41
23
createIDX()
createIndex()
deleteIDX()
deleteIndex()
23.8.4
IDBIndex get()
IDBRequest get (any key);
key get()
key
get()
JSON Products
idx_cat Category
{ProductID":"1000001","ProductName":"USB 3.0 ",
"Category":" ","UnitPrice":1200}
{"ProductID":"1000003","ProductName":"USB 3.0 U3 ",
"Category":" ","UnitPrice":1250}
{"ProductID":"1000009","ProductName":"Samsung i9100 Galaxy S2 ",
"Category":" ","UnitPrice":5520}
{"ProductID":"1000025","ProductName":"HTML5 ",
"Category":" ","UnitPrice":780}
get()
23-42
HTML5 ()
23.8
23-14
get()
Products
index-get.html
<!DOCTYPE html>
<html>
<head>
<meta/>
<title></title>
<script>
var requestName = 'KTMS';
var objectStoreName = 'Products';
var version;
var indexedDB = window.indexedDB ||
window.mozIndexedDB ||
window.webkitIndexedDB;
var db;
function list() {
try {
var transaction = db.transaction([objectStoreName]);
var store = transaction.objectStore(objectStoreName);
var idx = store.index('idx_cat');
idx.get(' ').onsuccess = function (event) {
var request = event.target;
if (request)
document.getElementById('message').innerHTML =
' ' +
event.target.result.ProductName;
};
} catch (e) {
alert(e);
} finally {
if (db) {
db.close();
console.log(' !');
}
}
()
HTML5 ()
23-43
23
}
window.onload = function () {
var request = indexedDB.open(requestName);
request.onsuccess = function (event) {
db = event.target.result;
list();
};
};
</script>
</head>
<body>
<div id="message" ></div>
</body>
</html>
index() idx_cat
get() success
IDBIndex openCursor()
cursor
23-15
cusor
index-data-list.html
<!DOCTYPE html>
<html>
<head>
<meta/>
<title></title>
<script>
()
23-44
HTML5 ()
23.8
openCursor()
success cursor cursor
openCursor()
HTML5 ()
23-45
23
IDBRequest openCursor (
optional any? range,
optional DOMString direction);
range
IDBKeyRange range
interface IDBKeyRange {
readonly attribute any
lower;
readonly attribute any
upper;
readonly attribute boolean lowerOpen;
readonly attribute boolean upperOpen;
static IDBKeyRange only (any value);
static IDBKeyRange lowerBound (any lower, optional boolean open);
static IDBKeyRange upperBound (any upper, optional boolean open);
static IDBKeyRange bound (
any lower, any upper,
optional boolean lowerOpen, optional boolean upperOpen);
};
only
value
lowerBound
upperBound
bound
direction cursor
direction
next
Cursor
nextunique
next
prev
Cursor
prevunique
prev
cursor
23-46
HTML5 ()
23.8
23-16
index-data-only.html
<!DOCTYPE html>
<html>
<head>
<meta />
<title></title>
<script>
var requestName = 'KTMS';
var objectStoreName = 'Products';
var version;
var indexedDB = window.indexedDB ||
window.mozIndexedDB ||
window.webkitIndexedDB;
window.IDBKeyRange = window.IDBKeyRange ||
window.webkitIDBKeyRange ||
window.msIDBKeyRange
var db;
function list() {
try {
var transaction = db.transaction([objectStoreName]);
var store = transaction.objectStore(objectStoreName);
var skey = document.getElementById('key').value;
var keyRange = IDBKeyRange.only(skey);
var idx = store.index('idx_cat');
var crequest = idx.openCursor(keyRange);
var message = '<ul>';
crequest.onsuccess = function (event) {
var cursor = event.target.result;
if (cursor) {
message += (
()
HTML5 ()
23-47
23
list()
IDBKeyRange.
only() IDBKeyRange keyRange index()
cursor
lowerBound upperBound bound
bound()
23-48
HTML5 ()
23.8
23-17
23-16
index-data-range.html
function list() {
try {
var transaction = db.transaction([objectStoreName]);
var store = transaction.objectStore(objectStoreName);
var lower_value = parseInt(document.getElementById('lower').value);
var upper_value = parseInt(document.getElementById('upper').value);
var keyRange = IDBKeyRange.bound(lower_value, upper_value);
var idx = store.index('idx_price');
var crequest = idx.openCursor(keyRange);
var message = '<ul>';
crequest.onsuccess = function (event) {
var cursor = event.target.result;
if (cursor) {
message += (
'<li>' +key/value" + '' +
cursor.key + "/" + cursor.value.ProductName +
'</li>');
cursor.continue();
} else {
message += '</ul>';
document.getElementById('message').innerHTML = message;
}
};
} catch (e) {
alert('error:' + e);
}
}
HTML5 ()
23-49
23
bound() IDBKeyRange
SUMMARY
Indexed Databasse API
API
Indexed Databasse
23-50
HTML5 ()