赵工的个人空间


专业技术部分转网页计算转业余爱好部分


  网站建设

首页 > 专业技术 > 网站建设 > HTML5本地数据库
HTML5本地数据库

为了进一步加强客户端存储数据的能力,HTML5引入了本地数据库的概念。其中有几种方案,尚待完善中。常见的有IndexedDB和Web SQL等。

一、IndexedDB

索引数据库IndexedDB API是HTML5为存储大量结构化数据提供的解决方案。
IndexedDB是一个数据库系统,在用户的计算机上存储索引信息,它是作为底层API开发的,目的是支持更广泛的用途,使其变成最强大最复杂的API。
在IndexedDB中,数据库中的信息以对象(记录)的形式存储在对象库(表)中。对象库没有特定的结构,只能够找到其中对象的名称和索引。这些对象也没有既定的结构,每个对象的结构可以各不相同,多复制都可以,唯一条件是至少有一个属性声明为索引,以便在对象库中能够找到它们。

二、Web SQL:

Web SQL规范使用的是SQLite数据库,允许应用程序通过一个异步的JavaScript接口访问数据库,在移动领域非常有用。
SQLite是一款轻型的数据库,遵循ACID的关系型数据库管理系统,优势是嵌入式的,占用资源非常低,只需要几百KB内存。跨平台方面,SQLite能够支持Windows/Linux等主流操作系统,同时能与多种编程语言结合,如C#/PHP/Java/JavaScript等,还包含ODBC接口。

1.打开数据库:

openDatabase()方法可以打开一个已经存在的数据库。如果数据库不存在,它可以创建数据库。语法为:
var db=openDatabase("testDB","1.0","测试数据库",2*1024*1024,creationCallback);
其中有5个必需的参数,第一个表示数据库名,第二个表示版本号,第三个表示数据库的描述,第四个表示数据库的大小,第五个表示创建回调函数(可选)。

2.创建数据表:

transaction()方法可以进行事务处理,executeSql()方法可以执行SQL语句。可以同时使用这两个方法,在事务中处理SQL语句。创建数据表的方法为:
db.transaction(function(tx) {
   tx.executeSql('CREATE TABLE IF NOT EXISTS UserName (id unique,Name)');
});
使用transaction()方法传递给回调函数的tx是一个transaction对象,然后使用transaction对象的executeSql()方法,可以执行SQL语句。这里的SQL语句就是创建数据表的命令。

3.添加数据到数据表:

也可以使用transaction()方法和executeSql()方法,执行SQL语句添加数据到数据表:
db.transaction(function(tx) {
   tx.executeSql('INSERT INTO UserName (id,Name) VALUES (1, "张三")');
   tx.executeSql('INSERT INTO UserName (id,Name) VALUES (2, "李四")');
});
两个包含INSERT INTO命令的SQL语句表示插入数据,将会在本地数据库TestDB中的UserName表中添加两条数据。

4.读取数据库中的数据:

仍然使用使用transaction()方法和executeSql()方法,执行查询SQL语句,读取数据表数据:
db.transaction(function(tx) {
   tx.executeSql('SELECT * FROM UserName',[],function(tx,results) {
      var len=results.rows.length;
      for (var i=0;i<len;i++) {
         console.log(results.rows.item(i).Name);
      }
   }, null);
});
executeSql()方法中包含了select命令的SQL语句,表示查询,将从本地数据库TestDB中的UserName表中查询信息。查询出来的结果会传递给匿名的回调函数,回调函数中输出结果。

Copyright@dwenzhao.cn All Rights Reserved   备案号:粤ICP备15026949号
联系邮箱:dwenzhao@163.com  QQ:1608288659