在html5中内置了两种数据库,一种为SQLite(也是WebSQL),另一种为indexedDB。
sqlite的api参考:http://www.phonegapcn.com/docs/zh/cn/storage.html
支持情况:
SQLite 数据库可以在最新版的 Safari, Chrome 和 Opera 浏览器中工作。
核心方法:
1、openDatabase:这个方法使用现有的数据库或者新建的数据库创建一个数据库对象。
2、transaction:这个方法让我们能够控制一个事务,以及基于这种情况执行提交或者回滚。
3、executeSql:这个方法用于执行实际的 SQL 查询。
创建数据库对象
var db = openDatabase("myDB","1.0","test db",1024*100);
说明:
1. 该方法返回的是创建的数据库的对象,如果该数据库不存在才会创建这个数据库。
2. 第一个参数:数据库的名称
第二个参数:数据库的版本号
第三个参数:数据库的描述
第四个参数:数据库的大小
使用数据库
db.transaction(function(tx){
tx.executeSql("");
})
说明:
1.使用事务处理的原因:可以防止对数据库进行访问、执行有关操作时受到外界的干扰。在web上可能同时有很多人对网页进行访问,如果在访问数据库的过程中,正在操作的数据库被其他用户修改了,会引起很多意想不到的结果,因此使用事务来达到操作完成之前阻止其他用户对数据库的访问。
2.function(tx):是一个回调函数
3.tx.executeSql():该方法是用来执行sql语句的。
transaction.executeSql(sqlquery,[],dataHandler,errorHandler)
第一个参数:是数据库操作的sql语句
第二个参数:sql语句中所使用的参数的数组
第三个参数:成功执行sql语句后调用的回调函数,
function dataHandler(transaction,results)
第四个参数:执行sql语句时,如果出错调用的回调函数,
function errorHandler(transaction,errmsg)
例:
//建表
var db = openDatabase('mydb', '1.0', 'Test DB', 2 * 1024 * 1024);
db.transaction(function (tx) {
tx.executeSql('CREATE TABLE IF NOT EXISTS WIN (id unique, name)');
});
//插入数据
db.transaction(function (tx) {
tx.executeSql('INSERT INTO WIN (id, name) VALUES (1, "winty")');
tx.executeSql('INSERT INTO WIN (id, name) VALUES (2, "LuckyWinty")');
});
//查找数据
db.transaction(function (tx) {
tx.executeSql('SELECT * FROM WIN', [], function (tx, results) {
var len = results.rows.length, i;
for (i = 0; i < len; i++){
alert(results.rows.item(i).name );
}
}, null);
});
说明:result是数据查找的结果集,关于结果集的使用可以参考:http://www.phonegapcn.com/docs/zh/cn/storage.html#SQLResultSet