websql主要是依托浏览器环境下一种离线存储方式,主要是用于关系性数据库,与sqllite相似
判断浏览器是否支持
if(window.openDatabase){
console.log(“浏览器支持DataBase”);
}
创建、打开数据库
1、openDatabase 参数说明
- 数据库名称
- 版本号
- 数据库别名或者是介绍
- 数据库大小
- 数据库创建成功回调函数(可为空)
- 数据库创建失败的回调函数(可为空)
var db = openDatabase("appdb", "1.0", "appdatabase", 1024 * 1024 * 100, function(result) {
console.log("首页:创建数据库成功");
db = result;
});
if(!db) {
console.log("数据库创建失败!");
return;
} else {
console.log("数据库创建成功!");
}
创建表
trancaction 为数据库的事务函数,所有操作都需要经过事务处理,如果中间出同SQL语句错误则事务进行回事,所括建表语句都会回滚(ORACLE 里面PLSQL建表是不会回滚的,最开始在这块整蒙了)
- 操作块
- 事务失败的回调函数
- 事务成功的回调函数
db.transaction(function(tx) {
var sql = "CREATE TABLE IF NOT EXISTS ServerInfo (XF_XJ TEXT)";
tx.executeSql(sql, []);
}, function(error) {
//执行失败的回调函数
console.log("数据初始化失败,失败原因:" + error.message);
}, function(result) {
//执行成功的回调函数
console.log("数据初始化成功");
});
在建表语句里IF NOT EXISTS表示判断表是否存在,如果存在则不建表(注意的是,如果不添加此语句,在新建时如果表已存在,他会重新建立,表内的数据则会清空)
CREATE TABLE IF NOT EXISTS ServerInfo (XF_XJ TEXT)
增加,删除,修改
在增加删除修改内也需要用到transaction方法
通过executeSql可进行增加,删除,修改等操作
- sql语句
- sql参数
- 成功回调函数
- 错误回调函数
db.transaction(function(tx) {
var sql = "insert into CaoZuoYuan(user,name,password)values('0001','系统管理员','12345')";
tx.executeSql(sql, []);
});
这里直接生成SQL语句,你也可以用参数的方法
db.transaction(function(tx) {
var sql = "insert into CaoZuoYuan(user)values(?)";
tx.executeSql(sql, ['0001']);
});
更新和删除与之相同
查询功能的实现
1、判断数据是否存在
db.transaction(function(tx) {
tx.executeSql('select * from CaoZuoYuan', [], function(tx, results) {
var len = results.rows.length;
if (len<1)
{
var sql = "insert into CaoZuoYuan(user,name,password)values('0001','系统管理员','12345')";
tx.executeSql(sql, []);
}
});
});
2、查询数据并循环到列表
db.transaction(function(tx) {
tx.executeSql('select * from CaoZuoYuan where user="' + appview.user_id + '"', [], function(tx, results) {
len = results.rows.length;
if(len < 1) {
alert("用户名或密码错误!");
return;
}
for (i = 0; i < len; i++)
{
alert(results.rows.item(i).name);
}
}, null);
});