什么是 Web SQL
一、什么是 Web SQL
Web SQL 数据库是用于存储或管理数据库中数据的网页。该API受到Google Chrome、Opera和Android 浏览器的支持。
Web SQL API 不是HTML5规范的一部分,而是一个单独的规范。它解决了一组API来操作客户端数据库。
开放的数据库、事务,是执行的基本方法。
W3C Web 应用程序正在制定 2010 年11 月的规范。它指定了缺乏独立实现,因为该规范无法继续成为W3C推荐。
Mozilla Corporation是该标准背后的关键之一,同时也是IndexDB的主要推动者,是一种替代存储标准。
Web API不是HTML5规范的一部分。它是一个单独的规范,它指定一组API来操作客户端数据库。
Web SQL数据库可在最新版本的Safari 、Chrome和Opera中运行。
二、Web SQL 的方法
Web SQL有三种方法:
- 开放数据库: 它使用现有数据库创建数据库对象或创建新数据库。
- 事务: 事务可以控制事务并根据情况提交或回滚。
- 执行 SQL : 用于执行真正的SQL查询。
1、 开放数据库
如果数据库已经存在,则打开数据库的方法。使用下面的代码创建并打开数据库:
var db = openDatabase ('mydb', '1.0', 'Test DB', 2 * 1024 * 1024);
上述方法采用以下五个参数:
- 数据库名称
- 版本号
- 文字说明
- 数据库大小
- 建立回调
在最后一个和第 5 个参数中,如果正在创建数据库,将调用创建回调。
我们使用database.transaction()来执行查询。它有一个参数,执行如下查询:
var db = openDatabase('mydb', '1.0', 'Test DB', 2 * 1024 * 1024);
db.transaction(function (tx) {
tx.executeSql('CREATE TABLE IF NOT EXISTS LOGS (id unique, log)');
});
上面的代码在“ mydb ”数据库中生成了一个名为LOGS的表。
2、插入操作
要在表中创建条目,我们执行SQL语句,如下:
var db = openDatabase('mydb', '1.0', 'Test DB', 2 * 1024 * 1024);
db.transaction(function (tx) {
tx.executeSql('CREATE TABLE IF NOT EXISTS LOGS (id unique, log)');
tx.executeSql('INSERT INTO LOGS (id, log) VALUES (1, "foobar")');
tx.executeSql('INSERT INTO LOGS (id, log) VALUES (2, "logmsg")');
});
我们可以在创建输入时传递动态值,如下所示:
var db = openDatabase('mydb', '1.0', 'Test DB', 2 * 1024 * 1024);
db.transaction(function (tx) {
tx.executeSql('CREATE TABLE IF NOT EXISTS LOGS (id unique, log)');
tx.executeSql('INSERT INTO LOGS (id,log) VALUES (?, ?'), [e_id, e_log];
});
e_id和e_log是这里的外部变量,执行数组中的每一项。
3、读操作
要读取已经存在的记录,我们使用回调来捕获结果,如下所示:
var db = openDatabase('mydb', '1.0', 'Test DB', 2 * 1024 * 1024);
db.transaction(function (tx) {
tx.executeSql('CREATE TABLE IF NOT EXISTS LOGS (id unique, log)');
tx.executeSql('INSERT INTO LOGS (id, log) VALUES (1, "foobar")');
tx.executeSql('INSERT INTO LOGS (id, log) VALUES (2, "logmsg")');
});
db.transaction(function (tx) {
tx.executeSql('SELECT * FROM LOGS', [], function (tx, results) {
var len = results.rows.length, i;
msg = "<p>Found rows: " + len + "</p>";
document.querySelector('#status').innerHTML += msg;
for (i = 0; i < len; i++) {
alert(results.rows.item(i).log );
}
}, null);
});
三、Web SQL 示例
让我们将这个示例保存在一个完整的 HTML5文档中,如下所示,并尝试使用Safari浏览器运行它。
<!DOCTYPE HTML>
<html>
<head>
<script type = "text/javascript">
var db = openDatabase('mydb', '1.0', 'Test DB', 2 * 1024 * 1024);
var msg;
db.transaction(function (tx) {
tx.executeSql('CREATE TABLE IF NOT EXISTS LOGS (id unique, log)');
tx.executeSql('INSERT INTO LOGS (id, log) VALUES (1, "foobar")');
tx.executeSql('INSERT INTO LOGS (id, log) VALUES (2, "logmsg")');
msg = '<p>Log message created and row inserted.</p>';
document.querySelector('#status').innerHTML = msg;
})
db.transaction(function (tx) {
tx.executeSql('SELECT * FROM LOGS', [], function (tx, results) {
var len = results.rows.length, i;
msg = "<p>Found rows: " + len + "</p>";
document.querySelector('#status').innerHTML += msg;
for (i = 0; i < len; i++) {
msg = "<p><b>" + results.rows.item(i).log + "</b></p>";
document.querySelector('#status').innerHTML += msg;
}
}, null);
});
</script>
</head>
<body>
<div id = "status" name = "status">Status Message</div>
</body>
</html>
上面的代码产生以下结果:
Log message created and row inserted.
Found rows: 2
foobar
logmsg
热门文章
优秀文章