addData()

addData()

<!DOCTYPE html>

<html lang="en">


<head>

<meta charset="UTF-8">

<meta name="viewport" content="width=<device-width>, initial-scale=1.0">

<meta http-equiv="X-UA-Compatible" content="ie=edge">

<title>Document</title>

</head>


<body>

<script>

var db = window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB;

var request,

result,

version = 4;

var dbName = 'testDB',

osName = 'os1';



function createDB() {

request = db.open(dbName, version); //调用indexedDB.open方法就可以创建或者打开一个indexedDB数据库 得到的是IDBOpenDBRequest对象赋值给request


request.onsuccess = function() { //IDBOpenDBRequest接口定义onsuccess请求成功的回调函数句柄

db = request.result;

console.log('opensuccess');

}


request.onerror = function(e) { //IDBOpenDBRequest接口定义onerror请求失败的回调函数句柄

console.log(e.currentTarget.errormessage); //e代表event对象,里面包含数据库的信息。

}


request.onupgradeneeded = function() { //IDBOpenDBRequest接口定义onupgradeneeded数据库版本变化的回调函数句柄

db = request.result;

//创建表objectstorage

if (!db.objectStoreNames.contains(osName)) { //判断打开的indexDB数据库中的objectStorage中是否含有名称为osName的objectStorage

db.createObjectStore(osName, {

keypath: 'id' //以id作为主键类型 使用数据中的id字段作为key值

//autoIncrement: true 如果没有名称为osName的objectStorage,创建ObjectStorage,键值为自增型

})

}

}

}

createDB();


//存入数据 save data

//json数据格式

/* 数据在名称/值对中 名称/值对包括字段名称(在双引号中),后面写一个冒号,然后是值

          数据由,分隔

          {}保存对象

          []保存数组

        */

var data = [{

name: '史莱姆',

id: '001',

hp: 3,

category: ['怪物', '容易逃跑'] //data中加上category

}, {

name: '小蝙蝠',

id: '002',

hp: 5,

category: ['怪物', '飞行']

}, {

name: '小恶魔',

id: '003',

hp: 9,

category: ['怪物', '恶魔']

}]


//向objectstore添加数据

function addData() {

var transaction = db.transaction(osName, 'readwrite');

// 创建一个事务transaction (需要操作的objectstore的名称(多个名称可用数组[]),事务的模式)

//数据库和表之间需要事务transaction做桥梁

var store = transaction.objectStore(osName); // 获取名为osName的objectStore

for (var i = 0; i < data.length; i++) { //循环数据

store.add(data[i]); //运用add方法将数据加入到objectstore中

}

}


//增删查改方法

function getData(id) {

var transaction = db.transaction(osName, 'readwrite'); //创建一个事务

store = transaction.objectStore(osName); // 获取名为osName的objectStore

var request = store.get(id); //get 返回IDBRequest对象

request.onsuccess = function() {

console.log(request.result);

}

}


function getAllData() {

var transaction = db.transaction(osName, 'readwrite'); //创建一个事务

store = transaction.objectStore(osName); // 获取名为osName的objectStore

var request = store.getAll(); //getAll 返回IDBRequest对象

request.onsuccess = function() {

console.log(request.result);

}

}


function updateData(id) {

var transaction = db.transaction(osName, 'readwrite'); //创建一个事务

store = transaction.objectStore(osName); // 获取名为osName的objectStore

var request = store.get(id); //update 返回IDBRequest对象

request.onsuccess = function() {

var result = request.result;

request = store.put({ //使用put方法可以增加数据也可以修改数据

name: '吸血鬼',

id: id,

hp: 9,

category: ['怪物', '恶魔']

})

}

}


function deleteData(id) {

var transaction = db.transaction(osName, 'readwrite'); //创建一个事务

store = transaction.objectStore(osName); // 获取名为osName的objectStore

var request = store.delete(id); //delete 返回IDBRequest对象

request.onsuccess = function() {

console.log('delete success');

}

}


function clear() {

var transaction = db.transaction(osName, 'readwrite'); //创建一个事务

store = transaction.objectStore(osName); // 获取名为osName的objectStore

var request = store.clear(); //clear 返回IDBRequest对象

request.onsuccess = function() {

console.log('clear success');

}

}

</script>

</body>


</html>

http://img1.sycdn.imooc.com//climg/5c7f46d10001e90d08620941.jpg

可以添加数据库 可以创建表,但是添加数据就出问题了

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
提问者 soso_crazy 2019-03-06 12:18:16

找到问题所在,已解决。

问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
组件化思想开发电商网页 18版
  • 参与学习           人
  • 提交作业       467    份
  • 解答问题       4826    个

本路径带你通过系统学习HTML5、JavaScript、jQuery的进阶知识,不仅如此,还会学习如何利用组件化的思想来开发网页,知识点+案例,使得所学可以更好的得到实践。

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师