HTML5本地存储之Database Storage应用介绍
HTML5提供了多种本地存储技术,包括Web Storage、IndexedDB和Database Storage,Database Storage是一种使用SQLite数据库进行数据存储的方式,特别适用于嵌入式设备和移动应用,本文将详细介绍HTML5中的Database Storage的应用及其相关操作方法。
openDatabase方法

要使用Database Storage,首先需要通过openDatabase方法创建一个数据库对象,这个方法接受四个参数:数据库名、版本号(通常可省略)、描述以及预设的数据库大小,示例如下:
var db = openDatabase('myDatabase', '1.0', 'My first database', 2 * 1024 * 1024);
transaction方法
创建或打开数据库后,可以通过transaction方法执行一系列的数据库操作,这是一个异步函数,接受一个回调函数作为参数,用于编写具体的SQL语句,示例如下:
db.transaction(function (tx) {
tx.executeSql('CREATE TABLE IF NOT EXISTS testTable (id unique, name)');
});
executeSql方法
在transaction方法中,可以使用executeSql方法来执行SQL查询,这个方法接受四个参数:SQL查询字符串、参数数组、成功回调函数和失败回调函数,示例如下:
db.transaction(function (tx) {
tx.executeSql('INSERT INTO testTable (id, name) VALUES (0, "Byron")', [], function (tx, results) {
console.log("Insert successful");
}, function (error) {
console.log("Insert failed: " + error.message);
});
});
CRUD操作示例
以下是一个完整的CRUD(Create, Read, Update, Delete)操作示例:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF8">
<title>Database Storage Example</title>
</head>
<body>
<script>
// 打开或创建数据库
var db = openDatabase('testDB', '1.0', 'Test DB', 2 * 1024 * 1024);
// 插入数据
db.transaction(function (tx) {
tx.executeSql('CREATE TABLE IF NOT EXISTS contacts (id unique, name, phone)');
tx.executeSql('INSERT INTO contacts (id, name, phone) VALUES (0, "John Doe", "1234567890")', [], function (tx, results) {
console.log("Insert successful");
}, function (error) {
console.log("Insert failed: " + error.message);
});
});
// 读取数据
db.transaction(function (tx) {
tx.executeSql('SELECT * FROM contacts', [], function (tx, results) {
var len = results.rows.length;
console.log("Results: " + len);
for (var i = 0; i < len; i++) {
var row = results.rows.item(i);
console.log("Id: " + row.id + " Name: " + row.name + " Phone: " + row.phone);
}
}, function (error) {
console.log("Select failed: " + error.message);
});
});
// 更新数据
db.transaction(function (tx) {
tx.executeSql('UPDATE contacts SET phone = ? WHERE id = ?', ['0987654321', 0], function (tx, results) {
console.log("Update successful");
}, function (error) {
console.log("Update failed: " + error.message);
});
});
// 删除数据
db.transaction(function (tx) {
tx.executeSql('DELETE FROM contacts WHERE id = ?', [0], function (tx, results) {
console.log("Delete successful");
}, function (error) {
console.log("Delete failed: " + error.message);
});
});
</script>
</body>
</html>
HTML5 Database Storage的优势与局限
优势
1、结构化数据存储:适合处理复杂的结构化数据。
2、高效查询:支持SQL查询,可以快速检索和更新数据。
3、离线存储:支持离线访问,提高应用的性能和用户体验。
局限
1、标准化问题:Web SQL Database规范已停止更新,部分浏览器可能不支持。
2、安全性:由于所有操作都在客户端完成,存在数据安全风险。
FAQs
Q1: HTML5 Database Storage与IndexedDB有什么区别?
A1: HTML5 Database Storage使用SQLite数据库,适合处理结构化数据和复杂查询;而IndexedDB是基于JavaScript的对象存储系统,更适合存储大量结构化数据,支持事务处理和索引,但语法相对复杂。
Q2: Web SQL Database是否仍然推荐使用?
A2: 虽然Web SQL Database规范已停止更新,但在部分浏览器中仍然可用,如果项目需要兼容旧版浏览器,可以考虑使用,否则更推荐使用IndexedDB,因为它是W3C推荐的标准。